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