如何使用ggplot绘制按年份区分的地区国家数量柱状图?
解决按年份区分展示各地区国家数量的问题
你的代码目前没有把Year变量映射到ggplot的视觉属性上,导致所有年份的数据混在一起绘制,而且标题标注的2014和实际处理的全年份数据不匹配,结果会不准确。下面提供两种常用的修改方案:
方案一:按年份分面展示(推荐,数据呈现更清晰)
用facet_wrap()将每个年份的数据拆分为独立子图,适合年份较多的场景:
region_year %>% ggplot(aes(x = Region, y = Number)) + geom_col(fill='lightblue') + # 按年份生成子图,scales="free_x"可让每个子图x轴自适应,按需保留 facet_wrap(~Year, scales = "free_x") + labs(title = '各地区每年的国家数量', y = '国家数量', x = '地区') + # 旋转x轴标签避免重叠 theme(axis.text.x = element_text(angle = 45, hjust = 1))
方案二:同一图内用颜色区分年份,柱子并排展示
如果希望把所有年份数据放在同一图中,可将Year映射到fill参数,并用position_dodge()让同地区的不同年份柱子并排:
region_year %>% ggplot(aes(x = Region, y = Number, fill = factor(Year))) + # position_dodge控制同组柱子的并排间距 geom_col(position = position_dodge(width = 0.8)) + labs(title = '各地区每年的国家数量', y = '国家数量', x = '地区', fill = '年份') + theme(axis.text.x = element_text(angle = 45, hjust = 1))
另外,你代码中的arrange(desc(Number))对绘图结果没有影响,可根据需求保留或删除。
内容的提问来源于stack exchange,提问作者Georgia Bingham
相关产品推荐
相关产品推荐

