R语言ggplot2绘制柱状图如何按数值顺序排列x轴标签
ggplot2 固定x轴分类顺序方法
ggplot2 对字符型分类变量默认按字典序排列轴标签,不会自动识别字符串内嵌的数值做自然排序,将分类变量转为指定水平顺序的因子即可自定义轴排列顺序,两种常用实现方式如下:
- 方法1:预处理数据指定因子水平(推荐,后续复用数据时顺序不会乱)
library(ggplot2) # 定义你需要的x轴排列顺序 x_order <- c("TcChr2-S", "TcChr5-S", "TcChr11-S", "TcChr28-S", "TcChr34-S", "TcChr41-S") # 将chromosome列转为因子,levels参数传入自定义顺序 df$chromosome <- factor(df$chromosome, levels = x_order) # 运行原绘图代码即可得到正确顺序的柱状图 ggplot(data = df, aes(y = n, x = chromosome)) + geom_bar(stat = "identity")
- 方法2:绘图时在刻度层直接指定顺序(无需修改原始数据)
如果不想改动原数据框,可以直接在x轴的刻度函数里传入limits参数固定顺序:
ggplot(data = df, aes(y = n, x = chromosome)) + geom_bar(stat = "identity") + scale_x_discrete(limits = c("TcChr2-S", "TcChr5-S", "TcChr11-S", "TcChr28-S", "TcChr34-S", "TcChr41-S"))
提示:如果传入的顺序向量没有覆盖
chromosome列的所有取值,对应未匹配的分类会默认从图中移除,使用时请确保顺序向量包含全部要展示的分类。
内容的提问来源于stack exchange,提问作者Honorato
相关产品推荐
相关产品推荐

