GGplot geom_bar 以均匀间距堆叠项目

GGplot geom_bar stack items with even spacing

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

这是用一点 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')

但我正在寻找一个轻微的修改。数据有一个 id 列,范围从 1 到 15,这导致每个项目都有相应的大小。但我想让它们相同 height/size.

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

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

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

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

我认为添加 group= 是您想要的:

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

如果您定义 y=,则不需要 coord_flip()

ps,geom_col()等同于geom_bar(stat = 'identity')