我有一个这样的数据集,我的目标是制作一个条形图并用绿色填充正值,用红色填充负值:
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。
答案 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)