我想在 R 和 ggplot2 中创建一个直方图,其中的箱根据其连续的 x 值进行填充。大多数教程仅采用离散值或密度/计数进行着色。
已关注 this example能够用彩虹刻度给垃圾箱上色:
df <- data.frame(x = runif(100))
ggplot(df) +
geom_histogram(aes(x), fill = rainbow(30))
我想使用颜色渐变,其中垃圾箱从蓝色(最低)到黄色(最高)。 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 的长度,但每次都会遇到相同的错误。所以我的问题是:
scale_color_gradient
是fill
参数的正确函数吗?还是我必须使用另一个函数?- 如果这是正确的函数,我如何正确提供长度?
最佳答案
如果您希望每个 bin 具有不同的颜色,则需要在美学中指定 fill = ..x..
,这是 geom_histogram
的必要怪癖。将 scale_fill_gradient
与您喜欢的颜色渐变结合使用会产生以下输出:
ggplot(df, aes(x, fill = ..x..)) +
geom_histogram() +
scale_fill_gradient(low='blue', high='yellow')
关于r - 使用自定义渐变填充直方图箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50150269/