【发布时间】:2020-05-16 06:13:23
【问题描述】:
我想要一个条形图,如果数字为正,则将条形着色为红色,如果数字为负,则将条形着色为绿色。我希望它采用 ggplot“模板”的形式,我可以在其中更改基础数据,并且它仍然可以执行我想要的操作。目前我的代码只有在所有数字都是正数或者我的数据中有正数和负数时才有效。
版本 1(不起作用)。但是,所有条都应该是绿色的,因为没有正数,fill = change < 0 不起作用,在这种情况下它只需要第一种颜色,即红色。
data1 <- data.frame(group = as.factor(c("all", "men", "women")),
change = as.numeric(c(-10000, -6000, -4000)))
ggplot(data1,
aes(x = group,
y = change,
fill = change < 0)) +
geom_bar(stat = "identity") +
scale_fill_manual(guide = FALSE,
values = c("red", "green"))
第 2 版(按预期工作)。
data2 <- data.frame(group = as.factor(c("all", "men", "women")),
change = as.numeric(c(2000, 6000, -4000)))
ggplot(data2,
aes(x = group,
y = change,
fill = change < 0)) +
geom_bar(stat = "identity") +
scale_fill_manual(guide = FALSE,
values = c("red", "green"))
第 3 版(工作 - 偶然?)。所有的条都是红色的,但我猜在版本 1 中只是这种情况,因为红色首先出现在 scale_fill_manual 中指定的颜色中?
data3 <- data.frame(group = as.factor(c("all", "men", "women")),
change = as.numeric(c(10000, 6000, 4000)))
ggplot(data3,
aes(x = group,
y = change,
fill = change < 0)) +
geom_bar(stat = "identity") +
scale_fill_manual(guide = FALSE,
values = c("red", "green"))
无论我使用 data1、data2 还是 data3 作为输入,我如何指定条形颜色以使其按我的意愿工作?
【问题讨论】: