始终如一地定义条形图的填充颜色

时间:2014-03-11 19:06:11

标签: r ggplot2

我有一个这样的数据集,我的目标是制作一个条形图并用绿色填充正值,用红色填充负值:

df = data.frame(exp=c("A", "B", "C"), val = c(0.3,0.2,-0.1))
df$pos = df$val > 0
ggplot(df, aes(x=exp, y=val, fill=pos)) + geom_bar(stat="identity") + scale_fill_manual(values=c("red", "green"), guide=FALSE)

以上情节按我的预期运作。但是,如果我的数据集恰好是所有正值:

df$val = c(0.3, 0.4, 0.5)
df$pos = df$val > 0

同样的情节将所有正值都描绘成“红色”而不是“绿色”,这不是我想要或期望的。我该如何解决? TIA。

1 个答案:

答案 0 :(得分:2)

scale_fill_manual()内添加您需要TRUE值为绿色,FALSE为红色。如果您只是命名颜色名称,那么只有正值时,只有一个级别(TRUE)并且使用了两种颜色中的第一种(在您的情况下它是红色)。

ggplot(df, aes(x=exp, y=val, fill=pos)) + geom_bar(stat="identity") + 
  scale_fill_manual(values=c("FALSE"="red", "TRUE"="green"), guide=FALSE)