【康华同学】:优秀生物信息学博客

ggplot2-根据group给横坐标排序

2020-08-10  本文已影响0人  Olivia阿仪_鸦雀

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

上一篇下一篇

猜你喜欢

热点阅读