首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生物学途径中的RiverPlot

生物学途径中的RiverPlot
EN

Stack Overflow用户
提问于 2021-08-24 10:18:35
回答 1查看 38关注 0票数 0

我正在尝试绘制一个河图,以显示根据p值,从疾病阶段1到阶段2的路径是如何变得重要的。我想要显示基于相同路径的两个阶段之间的p值的河图的流量宽度。例如,p1和p2是两条通路,随着疾病从1期进展到2期,p1变得越来越重要(p值从0.8变化到0.02)。途径p1在第一阶段有12个突变基因,在第二阶段有9个突变基因。同样,通路p2在阶段1中显著,但在阶段2中不显著。途径p2在第一阶段有10个突变基因,在第二阶段有5个突变基因。此信息显示在下面的数据框中:

代码语言:javascript
复制
pathway <- c('p1','p1','p2','p2')
disease <- c('Stage-2','Stage-1','Stage-2','Stage-1')
pval <- c(0.01,0.8,0.7,0.02)
ngenes <- c(9,12,5,10)
df <- data.frame(pathway, disease, pval,ngenes)

现在,我使用ggalluvium绘制河图。代码如下所示:

代码语言:javascript
复制
library(ggalluvial)
ggplot(df,
   aes(x = disease, stratum = pathway, alluvium = pval,
       y = ngenes,
       fill = pathway, label = pathway)) +
scale_x_discrete(expand = c(.1, .1)) +
geom_flow() +
geom_stratum(alpha = .5) +
geom_text(stat = "stratum", size = 3) +
theme(legend.position = "none") +
ggtitle("River Plot")

我得到的情节是:

这不是我所期望的。缺少流( stage-1和stage-2之间的连接) (其宽度基于p值,即对于p1,stage-1的宽度较大,stage-2的宽度较小(或相反))。有没有人能建议如何给这个河图添加流量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-25 17:05:38

我遗漏了一个关于河图的关键信息,那就是要素之间的重要性。在我的原始数据框中,我没有正确地提供信息。因此,我做了以下更改:

代码语言:javascript
复制
pathway <- c('p1','p1','p2','p2')
disease <- c('Stage-2','Stage-1','Stage-2','Stage-1')
sub <- c(2,2,1,1)
pval <- c(0.01,0.8,0.7,0.02)
df <- data.frame(pathway, disease, pval,sub)

library(ggalluvial)
 ggplot(df,
   aes(x = disease, stratum = pathway, alluvium = sub,
       y = pval,
       fill = pathway, label = pathway)) +
scale_x_discrete(expand = c(.1, .1)) +
geom_flow() +
geom_stratum(alpha = .5) +
geom_text(stat = "stratum", size = 3) +
theme(legend.position = "none") +
ggtitle("River Plot")

使用上面的代码,我得到了以下图形:

这正是我要找的。在从阶段1到阶段2的过程中,路径p1变得越来越重要,在阶段1变得更宽,宽度变得越来越小,因为它在阶段2中变得更加重要。同样的信息也可以解释为途径p2。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68905765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档