目标:不受x轴变量名的影响,用group信息给横坐标进行排序
数据表:variable(样本名);value(值,想画箱线图);batch_melt(批次分类,即group)
直接用ggplot2画图:
ggplot()+geom_boxplot(data=test_data,aes(x=variable,y=value,fill=batch_melt))
问题:横坐标总是默认根据variable的文字顺序排序。。。
尝试1:将数据表格根据batch_melt进行重新排序
test _data2=test_data[order(test _data$batch_melt),]
据此表格重新画图,依旧是上面的效果。
尝试2:
根据以下帖子,整理解决思路:
https://bbs.pinggu.org/forum.php?mod=viewthread&tid=6398600
https://bbs.pinggu.org/forum.php?mod=viewthread&tid=6168941&page=1
https://www.jianshu.com/p/ab60e3633a48
https://blog.csdn.net/cdlka/article/details/75909753
需要给x坐标一个正确排序的factor level,以此小目标为题,问了实验室同学,学习到了“unique()”这个函数:按顺序取第一次出现的唯一一个factor,即可以保留排序后的variable的factor level顺序。
最终解决方法:
根据上述内容,我在这个问题上的解决方法分为两步:
① 按batch_melt给表格数据重新排序
② 用如下代码对排序后的表格绘图:
ggplot()+geom_boxplot(data=test_data2,aes(x=factor(variable,levels = unique(variable)),y=value,fill=batch_melt))
讨论:
没在ggplot2中找到取消默认排序的方法,如果有朋友知道什么更方便的方法,欢迎交流~
网友评论