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给横坐标排序

    目标:不受x轴变量名的影响,用group信息给横坐标进行排序 数据表:variable(样本名);value(值,...

  • thinkphp group by 组内排序写法

    thinkphp group by 组内排序写法 有时候会遇到需要对分组内 group by 的数据进行排序。比如...

  • ggplot分组折线图

    ggplot分组折线图 如果横坐标(year)为离散变量,必须还得加上‘group=year’的参数,或设置x=a...

  • 对字典进行排序

    字典排序NSDictionary* dict = @{@"class":@"1",@"group":@"a",@"...

  • High Performance MySQL

    ref: High Performance MySQL Group by原理:原理:group by先根据要分组的...

  • groupcache源码(2) Group

    Group对象 Group对象结构以及方法 NewGroup() 根据程序执行顺序,NewHTTPPool()->...

  • 表单字段排序的实现

    在table的 加上 标签实现根据字段的排序,给 标签url一个参数 o ,在视图中调用排序方法根据参数o得到字段...

  • sql:根据 group by 查找到最大创建日期小于某时间

    根据 group by 查找最大创建日期小于某时间的: 根据 group by 查找最大创建日期小于某时间的且符合...

  • 普通的BUG记录

    SQL语句使用group by,被group的那些数据默认‘顺序’是怎么的? 答案:按照主键的默认排序,并将被聚合...

  • 开窗函数

    排序同一个年级中年纪的排序开窗操作:rank() over (partition by)有点想group by只不...

网友评论

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

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