如何在ggplot中按包含日期范围的变量对x轴进行排序
问题原因
R中字符型变量默认按字母顺序排序,你的GROUP列当前为字符型,字母序下D开头的Dec '20-May '21排在最前,其次是N开头的Nov '20-Apr '21,最后是O开头的Oct '20-Mar '21,和你需要的时间顺序相反。
解决方法
只需要提前把GROUP列转换为按指定时间顺序排列的有序因子即可,原有ggplot绘图代码无需修改,处理数据的代码如下:
# 定义GROUP的正确时间顺序(从早到晚) group_order <- c("Oct '20-Mar '21", "Nov '20-Apr '21", "Dec '20-May '21") # 将GROUP列转为有序因子,level顺序按上述自定义规则设置 df$GROUP <- factor(df$GROUP, levels = group_order, ordered = TRUE)
运行上述代码处理完数据后,再执行你原来的ggplot绘图代码,即可得到符合预期的排序效果。
内容的提问来源于stack exchange,提问作者ANam
相关产品推荐
相关产品推荐

