ggplot2 - 使用空类保持颜色

时间:2016-03-03 15:52:32

标签: r ggplot2

是否有任何自动方式来保持ggplot2使用的不同颜色,如果特定类在给定的情节中是否存在则无关紧要?

对于以下问题:

library(ggplot2)

set.seed(100)

data <- data.frame(y=rnorm(100,2),class=sample(c("A","B","C"),100,rep=T),
                   stringsAsFactors=T)

output <- ggplot(data[which(data[,"class"] != "B"),], 
                 aes_string(x="class", y="y", fill="class")) +
  geom_boxplot() +
  scale_x_discrete(limits=c("A","B","C"), "class", drop=F)

如果我不使用 B 类的样本,我会得到以下图: Boxplot without Class B

output <- ggplot(data,
                 aes_string(x="class", y="y", fill="class")) +
  geom_boxplot() +
  scale_x_discrete(limits=c("A","B","C"), "class", drop=F)

但是如果所有类都存在,我想保持调色板的外观相同: Boxplot with all the Classes

我知道我可以手动调色板,但我想知道它可以强制ggplot考虑所有类,即使其中一个不存在。

1 个答案:

答案 0 :(得分:1)

您已经知道如何执行此操作:

ggplot(data[which(data[,"class"] != "B"),], 
                 aes_string(x="class", y="y", fill="class")) +
  geom_boxplot() +
  scale_x_discrete(limits=c("A","B","C"), "class", drop=F) +
  scale_fill_discrete(drop = F)

resulting plot