ggplot2 绘图如何保留原始的数据顺序?(2022.11.13更新)

本文介绍如何在使用ggplot2绘制散点图时,解决因因子水平排序不正确导致的颜色错乱问题。通过查看因子水平并重新设定level,确保颜色按照预期分组。提供了一种新方法,通过直接赋值level来简化调整过程,提高了代码的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里以散点图图为例

p <- ggplot(data,aes(x,y))+
  geom_point(aes(color=group),shape=19,size=3.5) #设置点的颜色,大小和形状

如果这里直接用aes(color=group),那么这个group分的时候是根据你的data里面的是能够成为因子的数据进行分组的,而有时因子的水平的排列顺序并不是在表格中看到的顺序,例如

在表格中分组信息排序是S1,S2,...,S10,S11,S12

但实际因子水平是S1,S10,S11,S12,S2,....

可以采用以下代码查看分组信息的水平(level)

factor(data$group) #data为数据,group为数据的分组信息

之前想到的解决方法是下面这个,但是我自己也觉得这个方法麻烦,评论区uu也有这样的想法,这里更新一下,多一步代码的新的解决办法!!!!

(旧方法)解决方法:建一个factor(因子),规定level(水平),然后把这个factor作为颜色的映射

data$group <-factor(data$group,level=c("S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12"))
p <- ggplot(data,aes(x,y))+
  geom_point(aes(color=group),shape=19,size=3.5)

(New version!)思路一致,就是把数据中的横坐标赋值给level

这里显示的是data:

 

level <- data[,1]    #就多出这一步,不用手动打出来,直接赋值
data$x <- factor(data$x,level = level)
p <- ggplot(data,aes(x,y))+
     geom_point()

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值