如何在ggplot中设置x轴按Visit 1-12的数据集顺序排列?
解决ggplot柱状图x轴Visit顺序问题
你的问题出在Visit列默认是字符类型,R会按字典序排序(比如Visit 10会排在Visit 2前面),要强制指定顺序,有两种简单方法:
方法一:提前将Visit转为有序因子
先修改数据集的Visit列类型,指定从Visit 1到Visit 12的顺序,再绘图:
# 转换Visit为有序因子 data_new$Visit <- factor(data_new$Visit, levels = paste0("Visit ", 1:12), ordered = TRUE) # 绘制图表 ggplot(data = data_new %>% gather(values, Score_dose, -Visit), aes(x = Visit, y = Score_dose, fill = values)) + geom_bar(stat = 'identity', position = 'dodge') + theme_bw()
方法二:在ggplot中直接指定x轴顺序
不用修改原数据集,通过scale_x_discrete参数强制设置x轴标签顺序:
ggplot(data = data_new %>% gather(values, Score_dose, -Visit), aes(x = Visit, y = Score_dose, fill = values)) + geom_bar(stat = 'identity', position = 'dodge') + scale_x_discrete(levels = paste0("Visit ", 1:12)) + # 自定义x轴顺序 theme_bw()
注意事项
如果你的Visit标签格式不是Visit 数字(比如是Visit1、Visit2这种无空格格式),只需要把paste0("Visit ", 1:12)改成paste0("Visit", 1:12)即可,匹配你的实际标签格式。
内容的提问来源于stack exchange,提问作者Afia A
相关产品推荐
相关产品推荐

