r - ggplot2:颜色作为 y 轴值的函数的条形图

标签 r ggplot2 bar-chart

我有这个简单的代码(数据 + 条形图):

dat <- c('Jan','Feb','Mar', 'Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')
val <- c(-2.5, 3, 2.5, -3.3, -1, 0.2, 6, 4.3, 5.5, 2, -1.9, -2.3)
df <- data.frame(dat, val)
bar <- ggplot(data = df, aes(x = factor(dat, levels = month.abb), y = val)) +
    geom_bar(stat = 'identity')
print(bar)

在其他地方,我使用以下调色板创建了一个热图:
# Palette
LtoM <-colorRampPalette(c('red', 'yellow' ))
Mid <- "snow3"
MtoH <-colorRampPalette(c('lightgreen', 'darkgreen'))

被称为:
scale_fill_gradient2(low = LtoM(100), mid = Mid, high = MtoH(100))

现在我想为我的条形图使用类似的调色板,也就是说,我希望每个条形中的颜色是高度的函数(从最小 y 的红色到最大 y 的绿色)。

请问我该怎么做?

最佳答案

您基本上已经有了当前的代码。只需添加 scale_fill_gradient 函数。

bar <- ggplot(data = df, aes(x = factor(dat, levels = month.abb), y = val, 
              fill=val)) +
       geom_bar(stat = 'identity') + 
       scale_fill_gradient2(low=LtoM(100), mid='snow3', 
       high=MtoH(100), space='Lab')

custom colors

但是,允许 scale_fill_gradient2 处理渐变效果很好
bar <- ggplot(data = df, aes(x = factor(dat, levels = month.abb), y = val, 
              fill=val)) + 
       geom_bar(stat = 'identity') + 
       scale_fill_gradient2(low='red', mid='snow3', high='darkgreen', space='Lab')

generated colors

关于r - ggplot2:颜色作为 y 轴值的函数的条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20120194/

相关文章:

在 session 中更改 tempdir()(更新 R_TempDir)

r - 数据不变的堆叠叠加条

r - 在 R (Ubuntu 12.04) 中加载 rJava 时出错

"%>%"链内的引用隧道变量

python - 如何拥有堆积条形的集群

python - 使用 plotly 在条形图上传播值

javascript - 查询嵌入在 Shiny 应用程序中的数据表的状态/属性

r - ggplot2:将 geom_bar 基线设置为 1 而不是零

r - 如何使用一个变量连续填充 ggplot2 条形图

python - 如何制作分组条形图