【问题标题】:ggplot2: barplot with colors as a function of y-axis valueggplot2:带有颜色作为 y 轴值函数的条形图
【发布时间】:2013-12-05 21:03:17
【问题描述】:

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

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)。

请问我该怎么做?

【问题讨论】:

    标签: r ggplot2 bar-chart


    【解决方案1】:

    您当前的代码基本上就在那里。只需添加 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')
    

    但是,允许 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')
    

    【讨论】:

    • 感谢您回复 lilster。实际上我知道如何得到你的第一张图,但这并不完全是我所追求的。当 val = 5 时,我希望 val = -2 的所有条形都是“红色”和“绿色”(以及介于两者之间的色标)。它是否不同于根据其代表的值对每个条进行着色(统一)。我希望我现在清楚一点
    • 我想我需要更多细节。 '当 val = 5 时,我希望 val = -2 处的所有条形都为'红色'和'绿色'(以及介于两者之间的色标)。
    • 你好 lilster 谢谢你的耐心 :) 我想画一个情节'喜欢'这个quinn-curtis.com/QCChar96.jpg 你看,在任何 y 值下,所有条形都是相同的颜色,颜色是y 值的函数。
    • 没有功能可以制作这样的图表。唯一的解决方法是定义许多非常小的中断并绘制堆积条形图,按照这个答案:stackoverflow.com/questions/16295440/…
    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2019-06-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    相关资源
    最近更新 更多