ggplot2 barchart:如果存在零计数,如何手动设置填充颜色

时间:2014-10-26 23:47:52

标签: r ggplot2

我想使用ggplot2创建带有手动填充颜色的条形图。

library(ggplot2)

如果任何类别中没有零计数,这样可以正常工作。

d <- data.frame(x=factor(1:7, levels=1:7))
g <- ggplot(d, aes(x=x)) +
  geom_bar(fill=rep(c("red", "blue"), length=7)) +
  scale_x_discrete(drop=FALSE)
g

但如果任何计数为零,我会收到错误:

d2 <- data.frame(x=factor(1:6, levels=1:7))
g %+% d2

Error: Incompatible lengths for set aesthetics: fill

我该怎么办?

1 个答案:

答案 0 :(得分:2)

您只需要改变填充方式:

d2 <- data.frame(x=factor(1:6, levels=1:7))
g <- ggplot(d2, aes(x=x)) +
  geom_bar(aes(fill=x)) +
  scale_x_discrete(drop=FALSE) +
  scale_fill_manual(values=rep(c("red", "blue"), length=7))
g

enter image description here