ggplot2-根据group给横坐标排序

目标:不受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中找到取消默认排序的方法,如果有朋友知道什么更方便的方法,欢迎交流~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。