0

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

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用来画河图。代码如下所示:

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")

我得到的情节是:

河图

这不是我所期待的。缺少流(第 1 阶段和第 2 阶段之间的连接)(其宽度基于 p 值,即 p1,第 1 阶段的宽度较高,第 2 阶段的宽度较小(或相反))。任何人都可以建议如何向这个河图添加流量。

4

1 回答 1

0

我错过了关于河图的重要信息,这是功能之间的重要性。在我的原始数据框中,我没有正确提供信息。所以我做了以下更改:

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。

于 2021-08-25T17:05:38.113 回答