首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当不存在值时,强制ggplot图例显示所有类别

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

Stack Overflow用户
提问于 2015-11-18 03:47:33
回答 1查看 17.2K关注 0票数 23

我试图强制ggplot显示图例并修复某个因子的颜色,即使在某个范围内没有值。

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

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

有没有一种方法来绘制这个图,强制cat2显示所有八个图例标签,并修复颜色,使ggplot的值始终为红色,ggplot的值始终为蓝色,等等。

我试过所有我能想到的东西,但都没有成功。

--可重现的例子--

代码语言:javascript
运行
复制
set.seed(45678)
dat <- data.frame(Row = rep(x = LETTERS[1:5], times = 10), 
                  Col = rep(x = LETTERS[1:10], each = 5),
                  Y = rnorm(n = 50, mean = 0, sd = 0.5),
                  X = rnorm(n = 50, mean = 0, sd = 2))

library(ggplot2)
library(RColorBrewer)
library(dplyr)

dat <- dat %>% mutate(Y1 = cut(Y, breaks = c(-Inf,-3:3,Inf)),
                      X1 = cut(X, breaks = c(-Inf,-3:3,Inf)))

# Figure 1
ggplot(data =  dat, aes(x = Row, y = Col)) +
  geom_tile(aes(fill = X1), 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"))

# Figure 2
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"))
EN

回答 1

Stack Overflow用户

发布于 2015-11-18 03:55:01

您应该能够在scale_fill_manual中使用drop = FALSE。那是,

代码语言:javascript
运行
复制
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)

有关更多信息,请参阅?discrete_scale

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33765710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档