【问题标题】:How to color geom_bar by y-axis values?如何通过 y 轴值为 geom_bar 着色?
【发布时间】:2018-12-05 18:38:18
【问题描述】:

我正在使用 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()

【问题讨论】:

  • 我加了一个,谢谢

标签: r ggplot2


【解决方案1】:

你可以使用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
  • 感谢@RuiBarradas。已编辑。
  • 嗯,这对我不起作用。我实际上正在使用 geom_col。
  • 谢谢!我之前有一个不相关的错误。
猜你喜欢
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
相关资源
最近更新 更多