R 如何通过y轴值为几何图形条着色?

R 如何通过y轴值为几何图形条着色?,r,ggplot2,R,Ggplot2,我正在用ggplot2 geom_bar绘制标准条形图。我试着用一种不同于最低值条的颜色来填充最高值条 比如说, ggplot(mtcars, aes(x=as.factor(cyl) )) + geom_bar() 如何将20以上的条涂成红色(例如,e),10到20之间的条涂成蓝色(B和D),10以下的条涂成橙色(A和C) 谢谢你的见解 我正在使用geom_col,我的实际代码如下所示 ggplot(data, aes(x=State, y=Value)) + geom_col() 您

我正在用ggplot2 geom_bar绘制标准条形图。我试着用一种不同于最低值条的颜色来填充最高值条

比如说,

ggplot(mtcars, aes(x=as.factor(cyl) )) + geom_bar()
如何将20以上的条涂成红色(例如,e),10到20之间的条涂成蓝色(B和D),10以下的条涂成橙色(A和C)

谢谢你的见解

我正在使用geom_col,我的实际代码如下所示

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

您可以使用
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\u col
而不是
geom\u bar
,我们需要将
fill=stat(count)
更改为
fill=value\u column
(无论
value\u 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")

df我添加了一个,谢谢。你可以使用
cat
。谢谢@RuiBarradas。编辑。嗯,这对我不起作用。我实际上在用geom_col.谢谢!我以前有一个不相关的bug。