ggplot2:如何减小堆叠填充条形图的条形间距?
哈哈,这个问题我之前也踩过坑!用dodge确实会把堆叠效果搞成并排,完全不是咱们想要的。其实调整堆叠条形之间的间距根本不用碰dodge,换个思路就行~
首先得明确:position_fill()是专门做堆叠填充的,而position_dodge()是让分组条形并排显示的,这俩本来就是互斥的,所以用dodge肯定会取消堆叠,这是正常现象。
那怎么减小堆叠条形之间的间距呢?有两个关键参数可以调整:
1. 增大geom_bar()的width参数
你现在设置的width=0.09太小了,导致每个堆叠条形本身很窄,中间的空隙自然就大。把width调大,比如改成width=0.8,条形变宽后,它们之间的间距就会自动缩小。
2. 压缩x轴留白(可选)
如果调完width还是觉得间距有点松,可以用scale_x_discrete()的expand参数,减少x轴两侧和条形之间的留白,让整体更紧凑。
给你修改后的完整代码:
library(ggplot2) library(scales) # 因为用到了percent_format() ggplot(df,aes(x = No, y = Duration, fill=Val)) + geom_bar(position = position_fill(), stat = "identity", width=0.8) + # 增大width缩小间距 scale_y_continuous(labels = percent_format()) + scale_x_discrete(expand = c(0.05, 0)) # 可选:压缩x轴留白
这样修改后,堆叠条形会保持填充效果,同时彼此之间的间距会明显变小,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Kumar
相关产品推荐
相关产品推荐

