ggplot2-根据group给横坐标排序

作者: Olivia阿仪_鸦雀 | 来源:发表于2020-08-10 10:59 被阅读0次

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

    相关文章

      网友评论

        本文标题:ggplot2-根据group给横坐标排序

        本文链接:https://www.haomeiwen.com/subject/xfgjrktx.html