You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改ggplot2点图的Y轴顺序使其按X轴数值从小到大排序

要实现Y轴按X轴数值大小排序,核心是调整Y轴离散变量GOs的因子水平顺序,ggplot2默认会按照因子的levels属性排列离散轴条目,你可以用reorder()函数快速实现排序,无需修改原始数据结构。

修改后的绘图代码

你只需要调整aes中y的映射即可,其余代码保持不变:

ggplot(data = data, aes(x = GeneRatio, y = reorder(GOs, GeneRatio), 
                        color = `p.adjust`, size = Count)) + 
  geom_point() +
  scale_color_gradient(low = "red", high = "blue") +
  theme_bw() + 
  ylab("") + 
  xlab("") + 
  ggtitle("GO enrichment analysis")

补充说明

  • reorder(GOs, GeneRatio)会将GOs转为因子类型,默认按每个GO对应的所有GeneRatio的平均值从小到大设置因子水平,Y轴会按因子水平从下到上依次排列
  • 如果你想要X轴数值越大的GO在Y轴越靠下,只需要改为reorder(GOs, -GeneRatio)即可
  • 如果你需要按某个特定分组(比如仅按Condition为A的GeneRatio)排序,可以提前处理数据的因子水平:
    library(dplyr)
    data <- data %>%
      mutate(GOs = factor(GOs, levels = unique(GOs[order(GeneRatio[Condition == "A"])])))
    
    处理完成后直接用原始的y = GOs映射绘图即可。

内容的提问来源于stack exchange,提问作者joffie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:06:03