如何调整ggplot多变量箱线图x轴Umur按数值从小到大顺序排列
问题原因
你当前使用的x轴变量Umur属于无序因子/字符类型,ggplot2默认会按照字符字典序排列轴标签,因此不会按照年龄的数值大小从小到大排序。
修正方案
在绘图前先将Umur转换为按数值大小排序的有序因子即可,修改后的完整代码如下:
ton.ame.1 %>% # 新增:将Umur转为按数值从小到大排序的有序因子 dplyr::mutate(Umur = forcats::fct_reorder(Umur, as.numeric(as.character(Umur)))) %>% ggplot(mapping = aes(x = Umur, y = sum_by_group, color = Tahun)) + geom_boxplot() + stat_summary(fun = mean, geom = "point", shape = 18, aes(group = Tahun), position = position_dodge(0.85), color = "black", size = 2)+ ggtitle("2015-2019年ABCDEFGH种植园棕榈鲜果串(TBS)生产率 [单位: Ton/Ha]") + theme_bw()+ theme(plot.title = element_text(color = "black", size = 12, face = "bold", hjust = 0.5), plot.subtitle = element_text(color = "black", size = 12, face = "bold", hjust = 0.5), legend.position = "top") + xlab("种植树龄") + ylab("鲜果串产量 [ Ton/Ha ]")
补充说明
- 代码中同时将原已弃用的
fun.y参数替换为新版ggplot2推荐的fun参数,避免运行时抛出警告 - 如果你确认
Umur本身是数值类型,仅需要将其作为离散变量分组,可以直接将aes(x = Umur)修改为aes(x = factor(Umur)),无需额外调整排序逻辑
内容的提问来源于stack exchange,提问作者Andri Suheri
相关产品推荐
相关产品推荐

