我想要一个条形图,如果数字为正,则将条形颜色为红色,如果数字为负,则将条形颜色为绿色。我希望它采用 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"))
Run Code Online (Sandbox Code Playgroud)
版本 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, …
Run Code Online (Sandbox Code Playgroud)