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) ## 增加该选项,保证绘图的顺序不发生改变
绘图结果如下: