R语言绘图中保持绘图的顺序不发生改变

 

001、生成测试数据以及测试

复制代码
library(ggplot2)
x <- paste0("s", 1:16)
y <- 4:19
dat <- data.frame(x, y)       ## 生成测试数据框
dim(dat)
head(dat, 3)

ggplot(dat,aes(x,y))+
  geom_point()                ## 直接绘制散点图
复制代码

绘图结果如下,可见并不是按照原始数据中的顺序输出绘图结果:

 

 

002、保持绘图的顺序跟原始数据的一致

复制代码
library(ggplot2)
x <- paste0("s", 1:16)
y <- 4:19
dat <- data.frame(x, y)                   ## 生成测试数据,跟001中保持一致
dim(dat)
head(dat, 3)

dat$x <- factor(dat$x,level = dat[,1])    ## 对dat中的x列进行转换
ggplot(dat,aes(x,y))+
  geom_point()
复制代码

如下为绘图结果,可见顺序与原始数据中的顺序一致:

 

参考:https://blog.csdn.net/weixin_56198196/article/details/124518774 

 

003、使用scale_x_discrete(limits=dat$x)选项

a、原始绘图

library(ggplot2)
x <- paste0("s", 1:16)
y <- 4:19
dat <- data.frame(x, y)           ## 保持测试数据不变

ggplot(dat,aes(x,y))+
  geom_point()                    ## 直接绘制散点图

绘图结果如下,可以看到绘图的顺序发生的改变:

 

 

b、增加 scale_x_discrete(limits= )) 选项,使绘图的顺序不发生改变:

library(ggplot2)
x <- paste0("s", 1:16)
y <- 4:19
dat <- data.frame(x, y)                  ## 保持测试数据不变


ggplot(dat,aes(x,y))+ geom_point() +
  scale_x_discrete(limits=dat$x)         ## 增加该选项,保证绘图的顺序不发生改变

绘图结果如下:

 

posted @   小鲨鱼2018  阅读(665)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
历史上的今天:
2022-03-22 linux中将矩阵数据转换为一行数据
2022-03-22 linux中将矩阵数据转换为一列数据
2022-03-22 linux中如何将一列数据转换为一行数据
2021-03-22 c语言中数组中元素的个数
点击右上角即可分享
微信分享提示