R语言ggplot2绘制柱状图如何实现x轴标签与柱形对齐
柱状图柱体与X轴标签错位修复方案
错位诱因
错位由两处配置问题共同导致:
- 单系列柱状图误用分组柱图专用的位置调整参数
position_dodge2():该参数的作用是给同X轴位置的多组柱体分配并排位置,单柱场景下会主动给柱体添加横向偏移,直接导致柱体脱离X轴刻度中心。 - X轴文本主题配置重复冲突:代码先后两次设置
axis.text.x属性,第一次设置的hjust=1(右对齐)没有被后续配置完全覆盖,导致X轴标签相对刻度偏移。
修正后完整代码
library(ggplot2) library(wesanderson) # 匹配示例数据结构 df <- data.frame( libnatmut = c("Vente", "Vente en l'état futur d'achèvement"), counts = c(679, 137) ) g1 <- ggplot(data=df, aes(x = libnatmut, y = counts, fill=libnatmut)) + geom_bar(stat = "identity", width = 0.3) + labs(title = "Nature des mutations", x="Type de la vente", y="Nombre de ventes") + geom_text(aes(label = counts), vjust = -0.3) + theme( axis.text.x = element_text(face="bold", color="#993333", size=14, angle=0, hjust = 0.5), axis.text.y = element_text(face="bold", color="#993333", size=14), axis.title = element_text(size=22), plot.title = element_text(size=24), axis.line = element_line(colour = "#993333", size = 1, linetype = "solid") ) + scale_fill_manual(values = rep_len(wes_palette("Zissou1"), 10)) + theme(legend.position = "none") ggsave(g1, filename = "libnatmut.png", dpi = 300, height = 30, width = 30, units = "cm")
关键调整说明
- 移除
geom_bar中多余的position=position_dodge2(preserve='single')配置,单系列柱图默认使用position_identity()即可让柱体落在X轴刻度正中心。 - 合并重复的X轴文本主题配置,显式设置
hjust=0.5,强制X轴标签以刻度线为中心水平对齐,避免旧配置的对齐参数残留。 - 清理冗余配置:删除第一次设置的
angle=17,hjust=1的无效X轴文本配置,删除Y轴文本无意义的angle=360参数(等价于angle=0,为默认值)。 - 调整后柱体、柱顶数值标签、X轴分类标签三者完全居中对齐,无偏移问题。
内容的提问来源于stack exchange,提问作者mmcr_economics
相关产品推荐
相关产品推荐

