ggalluvial|TCGA临床数据绘制桑基图(Sankey)
本文首发于”生信补给站“,https://mp.weixin.qq.com/s/yhMgkST-rVD6SaQS7R-eoA
桑基图(Sankey diagram),是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。
因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图”。
一 载入R包,数据
本文使用TCGA数据集中的LIHC的临床数据进行展示,大家可以根据数据格式处理自己的临床数据。也可后台回复“R-桑基图”获得示例数据以及R代码。
#install.packages("ggalluvial")
library(ggalluvial)
library(ggplot2)
library(dplyr)
#读入LIHC临床数据
LIHC <- read.csv("TCGA_lihc.csv",header=TRUE)
#展示数据情况
head(LIHC)
PATIENT_ID AGE SEX AJCC_PATHOLOGIC_TUMOR_STAGE OS_STATUS
1 TCGA-XR-A8TE less50 Male STAGE III LIVING
2 TCGA-5R-AA1D less50 Female STAGE III LIVING
3 TCGA-DD-A1EC less50 Female STAGE I LIVING
4 TCGA-ED-A7PY less50 Female STAGE II LIVING
5 TCGA-RC-A6M5 less50 Female STAGE IV LIVING
6 TCGA-DD-A1EH less50 Male STAGE III LIVING
summary(LIHC)
桑基图的数据结构需要节点,权重等信息,ggalluvial 的输入数据可以是长数据亦可以是宽数据。
二 绘制桑基图
1 宽数据示例
对临床数据进行简单的处理,得到后四个变量的频数,整理成宽数据:以下处理过程可参考链接
#分组计算频数
LIHCData <- group_by(data,AGE,SEX,AJCC_PATHOLOGIC_TUMOR_STAGE,OS_STATUS) %>% summarise(., count = n())
#查看宽数据格式
head(LIHCData)
AGE SEX AJCC_PATHOLOGIC_TUMOR_STAGE OS_STATUS count
<fct> <fct> <fct> <fct> <int>
1 50to70 Female STAGE I DECEASED 11
2 50to70 Female STAGE I LIVING 16
3 50to70 Female STAGE II DECEASED 3
4 50to70 Female STAGE II LIVING 11
5 50to70 Female STAGE III DECEASED 8
6 50to70 Female STAGE III LIVING 9
绘制桑基图
ggplot(as.data.frame(LIHCData),
aes(axis1 = AJCC_PATHOLOGIC_TUMOR_STAGE, axis2 = SEX, axis3 = AGE,
y= count)) +
scale_x_discrete(limits = c("AJCC_STAGE", "SEX", "AGE"), expand = c(.1, .05)) +
geom_alluvium(aes(fill = OS_STATUS)) +
geom_stratum() + geom_text(stat = "stratum", label.strata = TRUE) +
theme_minimal() +
ggtitle("Patients in the TCGA-LIHC cohort",
"stratified by demographics and survival")
axis参数设置待展示的节点信息(柱子);
geom_alluvium参数设置组间面积连接,此处按生存状态分组;
2 长数据示例
ggplot2通常处理的都是长表格模式,使用to_lodes_form函数即可转换
#to_lodes_form会生成alluvium和stratum列。主分组位于命名的key列中
LIHC_long <- to_lodes_form(data.frame(LIHCData),
key = "Demographic",
axes = 1:3)
head(LIHC_long)
OS_STATUS count alluvium Demographic stratum
1 DECEASED 11 1 AGE 50to70
2 LIVING 16 2 AGE 50to70
3 DECEASED 3 3 AGE 50to70
4 LIVING 11 4 AGE 50to70
5 DECEASED 8 5 AGE 50to70
6 LIVING 9 6 AGE 50to70
# 绘制桑基图
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")
3 状态变化的趋势
vaccinations为R包内置数据集,可展示同一subject在不同survey状态下的response情况。
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")
4 更多细节
vignette(topic = "ggalluvial", package = "ggalluvial")
以上就是如何使用R-ggalluvial包绘制桑基图的简单介绍,可以自己动手展示了
ggalluvial|TCGA临床数据绘制桑基图(Sankey)的更多相关文章
- python可视化动态图表: 关于pyecharts的sankey桑基图绘制
最近因工作原因,需要处理一些数据,顺便学习一下动态图表的绘制.本质是使具有源头的流动信息能够准确找到其上下级关系和流向. 数据来源是csv文件 导入成为dataframe之后,列为其车辆的各部件供应商 ...
- vue项目中基于D3.js实现桑基图功能
前端实现数据可视化的方案有很多种,以前都是使用百度的echarts,使用起来很方便,直接按照特定的数据格式输入,就能实现相应的效果,虽然使用方便,但是缺点就是无法自定义一些事件操作,可自由发挥的功能很 ...
- echart 桑基图操作事项
例图 注意: option = { label:{//formatter名字 show:true, formatter:function(obj){ return obj.data.name+'_12 ...
- python数据可视化(一)——绘制随机漫步图
数据可视化指的是通过可视化表示来探索数据,它与数据挖掘紧密相关. python有一系列的可视化和分析工具,最流行的工具之一是matplotlib,它是一个数学绘图库. 实现绘制随机漫步图 利用ra ...
- ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)
本文首发于“生信补给站”:https://mp.weixin.qq.com/s/8kz2oKvUQrCR2_HWYXQT4g 如果有maf格式的文件,可以直接oncoplot包绘制瀑布图,有多种展示和 ...
- 【转】使用Python matplotlib绘制股票走势图
转载出处 一.前言 matplotlib[1]是著名的python绘图库,它提供了一整套绘图API,十分适合交互式绘图.本人在工作过程中涉及到股票数据的处理如绘制K线等,因此将matplotlib的使 ...
- Origin9.1如何绘制风向玫瑰图(Binned Data)?
Origin9.1如何绘制风向玫瑰图(Binned Data)? 时间:2014/5/14 21:02:44 点击: 2624 核心提示:今天为大家介绍下如何使用Origin9.1绘制如下图所示的风向 ...
- Origin9.1如何使用原始数据(Raw Data)绘制风向玫瑰图
核心提示:今天为大家简单介绍下如何使用原始数据绘制风向玫瑰图.本例以Origin 9.1进行演示.1.本例所用数据截图如下,列A为风向,列B为风速.2.选中两列数据,进入Plot下的Specializ ...
- Matlab boxplot for Multiple Groups(多组数据的箱线图)
在画之前首先介绍一下Matlab boxplot,下面这段说明内容来自http://www.plob.org/2012/06/10/2153.html 由于matlab具有强大的计算功能,用其统计 ...
随机推荐
- Echarts 常用API之action行为
一.Echarts中的action echarts中支持的图表行为,通过dispatchAction触发. 1.highlight 高亮指定的数据图形 dispatchAction({ type: ' ...
- REST架构原则初探
目录 什么是RESTful架构? REST 架构原则 资源(Resource) 表现层(Representation) 状态转换(State Transfer) 无状态通信原则 RESUful API ...
- git 比较两个分支不同的commit
比如我们有 2 个分支:master, dev,现在想查看这两个 branch 的区别,有以下几种方式: undefined 1.查看 dev 有,而 master 中没有的: 1.查看 dev 有, ...
- SpringBoot视图层技术
一.SpringBoot整合jsp 在maven的dependencies的依赖中除了springBoot启动器还要添加对jstl和jsp的依赖. <dependencies> <d ...
- Android插件化(六): OpenAtlasの改写aapt以防止资源ID冲突
Android插件化(六): OpenAtlasの改写aapt以防止资源ID冲突 转 https://www.300168.com/yidong/show-2791.html 核心提示:引言And ...
- ISO/IEC 9899:2011 条款5——5.2.4 环境限制
5.2.4 环境限制 1.翻译与执行环境都约束了语言翻译器和库的实现.下面概述了对一个顺应标准实现的语言相关的环境限制:库相关的限制在条款7中讨论. 5.2.4.1 翻译限制 1.实现应该能够翻译并执 ...
- python argparse例子实践
python 解析命令行读取参数,在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数. 万能的python自带了sys.arg.argparse.optparse模块等, ...
- 【精华】PHP网站验证码不显示的终结解决方案
PHP网站验证码不显示,这个是个很基础的PHP问题了,不过有点时候会比较让开发者比较头疼了.很多解决方案仅仅考虑到gd2,却忽略了另外一个很重要的因素了,相信在了解本教程之后,验证码不显示基本上就不算 ...
- VisualStudio版本号
VisualStudio的工程文件,后面的数字对应的VS的版本号, 71表示的VS2003, 80表示VS2005, 90表示VS2008, 10表示VS2010等.
- ES6 Syntax and Feature Overview
View on GitHub Note: A commonly accepted practice is to use const except in cases of loops and reass ...