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

如何基于GFP_wide值排序geom_tile热图的Entrez.Symbol顺序?

解决方案

要实现按GFP_wide的value值排序热图,并让GFP_my列遵循相同基因顺序,核心是通过因子化基因名称并固定排序规则来实现,具体步骤如下:

步骤1:获取按GFP_wide值排序的基因顺序

先从长格式数据中提取GFP_wide组的数据,按value排序后得到基因的目标顺序:

方法一(使用dplyr/tidyverse)

library(dplyr)

# 筛选GFP_wide数据,按value从小到大排序,提取去重后的基因顺序
sorted_genes <- GFP_long %>%
  filter(variable == "GFP_wide") %>%
  arrange(value) %>%  # 若要从大到小排序,改为arrange(desc(value))
  pull(Entrez.Symbol) %>%
  unique()

方法二(使用Base R)

如果未安装dplyr,可使用基础R代码实现:

# 提取GFP_wide数据子集
gfp_wide_subset <- GFP_long[GFP_long$variable == "GFP_wide", ]
# 按value从小到大排序
gfp_wide_sorted <- gfp_wide_subset[order(gfp_wide_subset$value), ]
# 获取去重后的基因顺序
sorted_genes <- unique(gfp_wide_sorted$Entrez.Symbol)

步骤2:将基因名称转换为有序因子

把原数据中的Entrez.Symbol列转换为因子,并指定levels为步骤1得到的排序后基因列表,这样ggplot会严格按照该顺序绘制x轴:

GFP_long$Entrez.Symbol <- factor(GFP_long$Entrez.Symbol, levels = sorted_genes)

步骤3:绘制热图

使用你原有的绘图代码即可,此时x轴基因会按GFP_wide的value顺序排列,GFP_my列也会遵循相同顺序:

ggplot(GFP_long, aes(x=Entrez.Symbol, y=variable, fill=value)) + 
  geom_tile()+
  scale_fill_gradient(low="red", high="green")

补充说明

  • 若希望GFP_wide列颜色从绿到红渐变(即value大的显示红色),只需互换scale_fill_gradient的low和high参数。
  • 数据中BRCA1对应两条相同的GFP_wide记录,使用unique()去重不会影响最终排序结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:51:34