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 @ 2023-03-22 11:15  小鲨鱼2018  阅读(548)  评论(0编辑  收藏  举报