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

如何在含Pvalue的通路柱状图中添加Rich factor信息?

通路分析需求及解决方案

通路分析数据

Pathway#ProteinsPvalueRichfactor
肽链延伸901.11E-160.5
翻译延伸791.11E-160.7
P53通路501.11E-160.2
cGAS-sting通路201.11E-160.4

需求说明

已使用ggplot2生成展示#Proteins、以Pvalue填充颜色的通路柱状图,需在图中添加Rich factor信息。

解决方案

方案1:在柱子上方标注Rich factor数值

这种方式直接在每个柱状图上方添加对应Rich factor的文本,直观展示数值:

library(ggplot2)
library(viridis)

# 读取数据
top_fun <- read.delim(file="Pathways.txt", header = TRUE)
topfun <- as.data.frame(top_fun)

# 保持Pathway的原有顺序
topfun$Pathway <- factor(topfun$Pathway, levels=unique(topfun$Pathway))

ggplot(topfun, aes(x=Group, y=Proteins, fill=Pvalue)) +
  geom_col(position="dodge", width=0.4) +
  # 添加Rich factor标注,格式为"RF: 数值",放在柱子上方
  geom_text(aes(label=paste0("RF: ", Richfactor)), 
            position=position_dodge(width=0.4), vjust=-0.5, size=3.5) +
  coord_flip() +
  scale_fill_viridis(option="mako") +
  facet_grid(Pathway~.) +
  theme(strip.text.y = element_text(angle = 0)) +
  # 扩展Y轴范围,避免标注被截断
  expand_limits(y=max(topfun$Proteins)*1.1)

方案2:双Y轴同时展示#Proteins和Rich factor

如果需要对比#Proteins与Rich factor的趋势,可采用双Y轴,左侧展示柱状图的#Proteins,右侧展示Rich factor的散点:

library(ggplot2)
library(viridis)

top_fun <- read.delim(file="Pathways.txt", header = TRUE)
topfun <- as.data.frame(top_fun)
topfun$Pathway <- factor(topfun$Pathway, levels=unique(topfun$Pathway))

# 计算Rich factor与#Proteins的比例转换系数
rf_scale <- max(topfun$Richfactor)/max(topfun$Proteins)

ggplot(topfun, aes(x=Group)) +
  # 绘制#Proteins柱状图
  geom_col(aes(y=Proteins, fill=Pvalue), position="dodge", width=0.4) +
  # 绘制Rich factor散点,转换到左侧Y轴的比例范围
  geom_point(aes(y=Richfactor / rf_scale), color="darkred", size=3) +
  coord_flip() +
  scale_fill_viridis(option="mako") +
  facet_grid(Pathway~.) +
  theme(strip.text.y = element_text(angle = 0)) +
  # 设置双Y轴,右侧对应Rich factor
  scale_y_continuous(
    name="#Proteins",
    sec.axis = sec_axis(~ . * rf_scale, name="Rich factor")
  ) +
  # 区分右侧轴的颜色
  theme(axis.text.y.right = element_text(color="darkred"),
        axis.title.y.right = element_text(color="darkred"))

注意:双Y轴需确保比例转换合理,避免数据展示误导,若仅需查看Rich factor数值,方案1更简洁。

内容的提问来源于stack exchange,提问作者Venkata Narasimha Kadali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:10:31