问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

使用R包ggalluvial绘制桑基图(Sankey)的完整教程

创作时间:
作者:
@小白创作中心

使用R包ggalluvial绘制桑基图(Sankey)的完整教程

引用
1
来源
1.
http://www.biocloudservice.com/wordpress/?p=56072

桑基图(Sankey)是一种特殊的流程图,用于展示数据的流动和分布情况。它通过图中分支的宽度来表示数据流量的大小,广泛应用于数据可视化分析领域。本文将详细介绍如何使用R包ggalluvial绘制桑基图,并通过两个具体实例进行演示。

桑基图简介

桑基图是一种相对复杂的图表类型,主要用于展示数据的流动和分布情况。与普通表格相比,桑基图能够更直观地呈现数据之间的关系,特别是在处理多个变量之间的复杂关系时,具有独特的优势。

使用ggalluvial绘制桑基图

1. 安装和加载所需包

library(ggalluvial)
library(ggplot2)
library(dplyr)

2. 数据准备

以TCGA-LIHC临床数据为例,展示如何准备数据:

# 读入LIHC临床数据
LIHC <- read.csv("data.csv", header = TRUE)

# 分组计算频数
LIHCData <- group_by(LIHC, AGE, SEX, AJCC_PATHOLOGIC_TUMOR_STAGE, OS_STATUS) %>%
            summarise(., count = n())

# 查看数据格式
head(LIHCData)

3. 绘制桑基图

# 绘制桑基图
ggplot(data = LIHC_long,
       aes(x = Demographic, stratum = stratum, alluvium = alluvium,
           y = count, label = stratum)) +
  geom_alluvium(aes(fill = OS_STATUS)) +
  geom_stratum() +
  geom_text(stat = "stratum") +
  theme_minimal() +
  ggtitle("Patients in the TCGA-LIHC cohort",
          "stratified by demographics and survival")

展示状态变化趋势

使用ggalluvial内置数据集vaccinations展示状态变化趋势:

data(vaccinations)
levels(vaccinations$response) <- rev(levels(vaccinations$response))

ggplot(vaccinations,
       aes(x = survey, stratum = response, alluvium = subject,
           y = freq,
           fill = response, label = response)) +
  scale_x_discrete(expand = c(.1, .1)) +
  geom_flow() +
  geom_stratum(alpha = .5) +
  geom_text(stat = "stratum", size = 3) +
  theme(legend.position = "none") +
  ggtitle("vaccination survey responses at three points in time")

总结

通过以上实例,我们可以看到ggalluvial包在绘制桑基图方面的强大功能。在使用时,需要注意理解代码中各个参数的含义,以便更好地展示数据可视化结果。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号