如何通过y轴值为geom_bar着色?

时间:2018-12-05 18:38:19

标签: r ggplot2

我正在用ggplot2 geom_bar制作标准条形图。我正在尝试用与最低值的条不同的颜色填充最高值的条。

例如,

ggplot(mtcars, aes(x=as.factor(cyl) )) + geom_bar()

如何为20以上的红色条(例如E),10至20的蓝色条(B和D)以及10以下的橙色(A和C)条着色。

感谢您的见解!

enter image description here

我使用的是geom_col,我的实际代码如下:

ggplot(data, aes(x=State, y=Value)) +
 geom_col()

1 个答案:

答案 0 :(得分:3)

您可以使用cut

ggplot(mtcars, aes(x = as.factor(cyl))) +
  geom_bar(aes(fill = cut(stat(count), breaks = c(0, 8, 12, Inf)))) +
  labs(fill = "Breaks")

enter image description here

您显然需要根据需要/数据调整休息时间。


修改

如果我们使用geom_col而不是geom_bar,则需要将fill = stat(count)更改为fill = value_column(无论value_column是什么,但都应与我们映射到y的一个)。

示例:

df <- data.frame(trt = c("a", "b", "c"), outcome = c(2.3, 1.9, 3.2))
ggplot(df, aes(trt, outcome)) +
  geom_col(aes(fill = cut(outcome, breaks = c(0, 2, 3, Inf)))) +
  labs(fill = "Breaks")