我正在尝试绘制河流图,以显示路径如何根据其 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 阶段的宽度较小(或相反))。任何人都可以建议如何向这个河图添加流量。