如何将两个geom_col绘图的对应条形并排合并?
解决方案:实现两组条形图并排展示
要让两个geom_col的对应条形并排,核心是给两个图层的x轴位置设置偏移量,避免重叠。结合你已用的ggnewscale实现双填充刻度,具体代码如下:
library(ggplot2) library(ggnewscale) df<-data.frame(names=c("A","B","C","D","E","F","G","H","I"), frequency=c(0.1,0.7,0.2,0.4,0.4,0.2,0.8,0.1,0.1), group=c("1","2","3","3","2","1","1","2","3")) ggplot(df) + # 第一组条形:按group填充,x轴向左偏移0.2 geom_col(aes(x = as.numeric(group) - 0.2, y = frequency, fill = group), width = 0.4) + scale_fill_manual(values=c("#CCCCCC","#ABABAB","#818181"), name = "Group") + # 切换填充刻度 new_scale_fill() + # 第二组条形:按names填充,x轴向右偏移0.2 geom_col(aes(x = as.numeric(group) + 0.2, y = frequency, fill = names), width = 0.4) + # 还原x轴刻度为原group字符,保证可读性 scale_x_continuous(breaks = 1:3, labels = c("1","2","3"), name = "group")
关键细节说明:
- 将
group转为数值型后,通过±0.2给两组条形设置左右偏移,实现并排效果。 - 设置
width=0.4,保证两组条形总宽度(0.4+0.4=0.8)不会超出x轴刻度间距,避免拥挤。 - 用
scale_x_continuous将数值化的x轴刻度还原为原始group字符,保持图表展示逻辑一致。
内容的提问来源于stack exchange,提问作者Kübra Çelikbaş
相关产品推荐
相关产品推荐

