ggplot绘图如何设置x轴显示2003-2014整数年份而非小数刻度
问题原因
当前x轴映射的Category字段为数值类型,ggplot默认对连续型数值轴自动生成均匀间隔刻度,因此会出现2005.5这类非整数的小数刻度,无法精准对齐2003-2014的整数年份点位。
调整方法
两种适配方案可按需选择:
- 方案1:保留x轴连续数值属性,手动指定年份断点
新增scale_x_continuous()层,明确指定需要展示的年份刻度即可,修改后完整代码如下:
ggplot(new_long_seabirds, aes(fill= Fishing_trend, y=count, x=Category))+ geom_bar(position="stack", stat="identity")+ labs(x = 'Year', y = 'Number of catches (000)', title = 'Estimated Sea bird by catch by fish trend from 2003-2014')+ scale_fill_brewer(palette="Spectral")+ # 指定x轴仅显示2003-2014的整数年份断点 scale_x_continuous(breaks = 2003:2014) + theme(axis.text.x = element_text(angle = 30, vjust = 1, hjust=1))
该方案适合后续需要对x轴做连续数值运算(如拟合趋势线、按数值区间缩放)的场景。
- 方案2:将年份转为离散因子类型
直接在美学映射里把Category转为因子型,ggplot会自动将每个独立年份作为离散刻度展示,不会生成中间小数刻度,代码如下:
ggplot(new_long_seabirds, aes(fill= Fishing_trend, y=count, x=as.factor(Category)))+ geom_bar(position="stack", stat="identity")+ labs(x = 'Year', y = 'Number of catches (000)', title = 'Estimated Sea bird by catch by fish trend from 2003-2014')+ scale_fill_brewer(palette="Spectral")+ theme(axis.text.x = element_text(angle = 30, vjust = 1, hjust=1))
该方案适合仅按年份分组做柱状图、不需要对x轴做连续数值处理的场景,写法更简洁。
内容的提问来源于stack exchange,提问作者rhelp
相关产品推荐
相关产品推荐

