首页 > 解决方案 > 堆叠的 geom_bar():在可变宽度的条之间保持相等的间隙

问题描述

我的样本数据和情节:

library(data.table)
library(ggplot2)

dt2 <- fread('
risk group counts
low  A     178
High A     1
low  B     4
High B     100
low  C     45
High C     83
low  D     50
High D     2
             ')
# ggplot(dt2, aes(x=group,y=counts,fill=risk)) + geom_bar(stat='identity')

dt2[,rel1:=counts/sum(counts),by=group]
# ggplot(dt2, aes(x=group,y=rel1,fill=risk)) + geom_bar(stat='identity')

dt2[,grpSize:=sum(counts),by=group]
ggplot(dt2, aes(x=group,y=rel1,fill=risk,width = grpSize/200)) + geom_bar(stat='identity')

在此处输入图像描述

如我所愿,条形的宽度与组的大小成正比,每个子组的高度(低/高)与该子组的大小成正比。但是改变width会导致改变条之间的间隙 - 我怎样才能避免这种情况并保持条之间的恒定距离?

标签: rggplot2mosaic-plotmarimekko-chart

解决方案


您可以使用facet_grid并将各个方面设置为在左侧和右侧没有空间

graphics.off()
ggplot(dt2, aes(x=group,y=rel1,fill=risk,width = grpSize/200)) +
    geom_bar(stat='identity') +
    scale_x_discrete(expand = c(0, 0)) +
    facet_grid(~group, scales = "free", space = "free")

在此处输入图像描述


推荐阅读