Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 当不存在值时,强制ggplot图例显示所有类别_R_Ggplot2 - Fatal编程技术网

R 当不存在值时,强制ggplot图例显示所有类别

R 当不存在值时,强制ggplot图例显示所有类别,r,ggplot2,R,Ggplot2,我试图强制ggplot显示图例,并修复某个因子的颜色,即使在某个范围内不存在任何值 在下面的可再现示例中,图1在变量X1的每个范围内至少有一个值,并根据需要绘制曲线。将打印每个图例标签并与所需颜色匹配 在示例2中,变量Y1在创建的每个范围中都没有值。因此,绘图仅显示前4个图例标签,并使用前4种颜色 是否有办法绘制此图形,强制ggplot显示所有八个图例标签并固定颜色,以便cat1值始终为红色,cat2值始终为蓝色,等等 我尝试了我能想到的一切,但没有成功 --可复制示例-- set.seed(4

我试图强制ggplot显示图例,并修复某个因子的颜色,即使在某个范围内不存在任何值

在下面的可再现示例中,图1在变量X1的每个范围内至少有一个值,并根据需要绘制曲线。将打印每个图例标签并与所需颜色匹配

在示例2中,变量Y1在创建的每个范围中都没有值。因此,绘图仅显示前4个图例标签,并使用前4种颜色

是否有办法绘制此图形,强制ggplot显示所有八个图例标签并固定颜色,以便cat1值始终为红色,cat2值始终为蓝色,等等

我尝试了我能想到的一切,但没有成功

--可复制示例--

set.seed(45678)

dat您应该能够在
scale\u fill\u manual
中使用
drop=FALSE
。就是

ggplot(data =  dat, aes(x = Row, y = Col)) +
  geom_tile(aes(fill = Y1), color = "black") +
  scale_fill_manual(values = c("red", "blue", "green", "purple", "pink", "yellow", "orange", "blue"),
                    labels = c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6", "cat7", "cat8"), 
                    drop = FALSE)
有关更多信息,请参见离散刻度

ggplot(data =  dat, aes(x = Row, y = Col)) +
  geom_tile(aes(fill = Y1), color = "black") +
  scale_fill_manual(values = c("red", "blue", "green", "purple", "pink", "yellow", "orange", "blue"),
                    labels = c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6", "cat7", "cat8"), 
                    drop = FALSE)