如何用ggplot2绘制按年份分组、区域区分颜色的并列柱状图?
解决并列柱状图显示异常的问题
问题原因
你的year变量是数值型(2000、2001以数字形式存储),当使用position = "dodge"时,ggplot会将x轴视为连续轴,无法正确识别同一年份下的分组,导致柱子错位、显示混乱。
修正方案
1. 将year转换为因子类型
把数值型的年份转为分类变量,让ggplot明确识别每个年份是独立的分组:
my_data$year <- as.factor(my_data$year)
2. 调整绘图代码
使用转换后的因子型year,搭配position = "dodge"即可实现并列柱状图。另外,region是分类变量,用渐变色彩(scale_fill_gradientn)适配性差,建议改用离散配色方案:
完整代码:
# 转换year为因子 my_data$year <- as.factor(my_data$year) # 绘制并列柱状图 ggplot(data = my_data, aes(x = year, y = value, fill = region)) + geom_bar(stat = "identity", position = position_dodge(width = 0.8)) + theme_minimal() + scale_fill_brewer(palette = "Set2")
补充说明
- 额外指定
position_dodge(width = 0.8)可以微调柱子间的间距,让布局更美观 - 离散配色(如
scale_fill_brewer)比渐变色彩更适合区分分类变量,视觉上更清晰
内容的提问来源于stack exchange,提问作者daddo
相关产品推荐
相关产品推荐

