如何解决ggplot堆叠条形图前两个条形重叠、X轴少一月的问题?
解决堆叠条形图月份重叠及X轴显示不全问题
问题根源
你使用的scale_x_binned()是针对连续数值型变量的分箱函数,但月份(Monat)本质是离散分类变量。当Monat为数值型时,分箱逻辑可能将前两个月份划入同一区间,导致条形重叠;同时分箱范围未覆盖1-12全部月份,造成X轴只显示11个刻度。
解决方案
将
Monat转换为离散因子,强制包含1-12所有月份作为独立类别:rawdata4.1$Monat <- factor(rawdata4.1$Monat, levels = 1:12)这一步确保每个月份都是单独的分类项,即使某个月份没有数据,X轴也会保留其位置。
替换/移除
scale_x_binned(),改用离散轴设置:
直接删除scale_x_binned(name = NULL),或者替换为scale_x_discrete(name = NULL)(如需自定义标签可补充labels参数)。
修改后的完整代码
# 转换月份为离散因子 rawdata4.1$Monat <- factor(rawdata4.1$Monat, levels = 1:12) ggplot(rawdata4.1, aes(x= Monat, y= Ankünfte, fill= Jahreszahl)) + facet_wrap(~ Herkunft, scale = "fixed") + geom_bar(position = "stack", colour = "black", lwd = 0.9, linetype = 1, stat = "identity") + scale_y_continuous(name= NULL, labels = label_number(suffix = " Mio", scale = 1e-6)) + scale_x_discrete(name = NULL) + ggtitle("Monatliche Ankünfte vor und nach Corona") + theme_pander() + theme(axis.title.y = element_text(vjust = +1.75), legend.position = "right") + scale_fill_economist()
额外验证
可以用table(rawdata4.1$Monat)检查数据中每个月份的存在情况,确认1-12是否都有记录。如果有缺失月份,通过factor(levels = 1:12)仍能强制X轴显示完整的12个月份刻度。
内容的提问来源于stack exchange,提问作者stargazzer101
相关产品推荐
相关产品推荐

