stacked geom_bar():在可变宽度的条形之间保持相等的间隙
stacked geom_bar(): keep equal gaps between bars with variable widths
我的示例数据和绘图:
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')
如我所愿,条形的宽度与组的大小成正比,每个子组的高度 (low/high) 与该子组的大小成正比。但是改变 width
会导致改变条之间的间隙 - 我怎样才能避免这种情况并保持条之间的恒定距离?
您可以使用 facet_grid
并将各个方面设置为在左侧和右侧没有 space
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")
我的示例数据和绘图:
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')
如我所愿,条形的宽度与组的大小成正比,每个子组的高度 (low/high) 与该子组的大小成正比。但是改变 width
会导致改变条之间的间隙 - 我怎样才能避免这种情况并保持条之间的恒定距离?
您可以使用 facet_grid
并将各个方面设置为在左侧和右侧没有 space
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")