r - 使用自定义渐变填充直方图箱

标签 r ggplot2 histogram gradient

我想在 R 和 ggplot2 中创建一个直方图,其中的箱根据其连续的 x 值进行填充。大多数教程仅采用离散值或密度/计数进行着色。

已关注 this example能够用彩虹刻度给垃圾箱上色:

df <- data.frame(x = runif(100))

ggplot(df) +
  geom_histogram(aes(x), fill = rainbow(30))

Rainbow histogram

我想使用颜色渐变,其中垃圾箱从蓝色(最低)到黄色(最高)。 scale_fill_gradient() 函数似乎可以实现这一点,但是当我将它插入到 fill 参数的 rainbow() 位置时,我收到一个错误:

> ggplot(df) +
+ geom_histogram(aes(x), fill = scale_fill_gradient(low='blue', high='yellow'))

Error: Aesthetics must be either length 1 or the same as the data (30): fill

我尝试了几种方法来为刻度提供 30 的长度,但每次都会遇到相同的错误。所以我的问题是:

  1. scale_color_gradientfill 参数的正确函数吗?还是我必须使用另一个函数?
  2. 如果这是正确的函数,我如何正确提供长度?

最佳答案

如果您希望每个 bin 具有不同的颜色,则需要在美学中指定 fill = ..x..,这是 geom_histogram 的必要怪癖。将 scale_fill_gradient 与您喜欢的颜色渐变结合使用会产生以下输出:

ggplot(df, aes(x, fill = ..x..)) +
  geom_histogram() +
  scale_fill_gradient(low='blue', high='yellow')

enter image description here

关于r - 使用自定义渐变填充直方图箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50150269/

相关文章:

python - Pandas 中的多个直方图

image - 定向梯度旋转和变换的直方图

r - R中合并多行

r - 使用 dplyr R 中的 mutate with across 将不存在的列添加到数据框

用 R 再现 SPSS 因子分析

r - 在ggplot条形图中显示离散变量的所有x轴标签

python - 时间类型误差直方图

r - 检查日期是否在查找表范围内

R- Stat_compare_means 不适合 ggplot?

r - 使用 ggplot_build 和 ggplot_gtable 后使用 ggsave 保存图形