如何根据y轴值对geom_bar进行着色?

3
我将使用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
我已经添加了一个,谢谢。 - James
1个回答

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

输入图像描述

显然,您需要根据您的需求/数据调整断点。


编辑

如果我们使用 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")

笔误:你可能使用cat命令 - Rui Barradas
感谢@RuiBarradas。已编辑。 - markus
嗯,对我没用。我实际上正在使用geom_col。 - James
1
谢谢!之前我有一个无关的错误。 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接