GGplot geom_bar 以均匀间距堆叠项目

Posted

技术标签:

【中文标题】GGplot geom_bar 以均匀间距堆叠项目【英文标题】:GGplot geom_bar stack items with even spacing 【发布时间】:2021-09-24 12:11:32 【问题描述】:

我想知道是否有人可以为我提供解决方案,因为我想可视化一个看起来像这样的堆叠条形图:

这是用一个小的 data.table 和下面的 ggplot 代码制作的


library(data.table)
library(ggplot2)

dt <- data.table(id = seq(15), pvalue = c(0.0323616533686601, 0.00405825892193357, 0.00406609088355357, 0.00252697950679603, 0.00277696431629866, 0.0212521760053885, 0.0315721033650767, 0.00716594255390525, 0.00829537987151543, 0.0163753389504665, 0.0328650069220695, 0.0146991756928858, 0.0178425139730873, 0.00345987886149332, 0.0499748920124661))

ggplot(dt, aes(1, id, fill = pvalue)) + geom_bar(stat = 'identity')

但我正在寻找一个轻微的修改。数据有一个从 1 到 15 的 id 列,这使得每个项目都有相应的大小。但我希望它们具有相同的高度/大小。

这可以通过这段代码来实现:

ggplot(dt, aes(id, fill = pvalue)) + geom_bar(stat = 'count') + coord_flip()

但是当我运行这个位时,我失去了正确着色它们的能力(使用 scale_fill_gradient2)

如果你找到一个好的解决方案,请告诉我:)

【问题讨论】:

【参考方案1】:

我认为添加group= 是您所追求的:

ggplot(dt, aes(y=id, fill = pvalue, group=id)) + 
    geom_bar() 

如果你定义了y=,你就不需要coord_flip()

ps,geom_col()geom_bar(stat = 'identity') 相同

【讨论】:

谢谢!这正是我正在寻找的,您是否也有解决方案来删除条之间的空白位? 添加geom_bar(width = 1) 删除空格。

以上是关于GGplot geom_bar 以均匀间距堆叠项目的主要内容,如果未能解决你的问题,请参考以下文章

ggplot geom_bar:aes的含义(组= 1)

ggplot:在 geom_bar 的每个方面添加不同的行

ggplot2:带有自定义 y 限制的 geom_bar

ggplot用geom_bar中的百分比替换计数

使用 Cowplot align 保持绘图间距不变

ggplot2:geom_bar 与组,position_dodge 和填充