桑基图(Sankey)的简单实现

作者: 9d760c7ce737 | 来源:发表于2019-06-18 15:13 被阅读109次

ggforce这个R包一身都是宝,之前的贝塞尔曲线就来自于这个包。
无处不在的贝塞尔曲线

里面还有很多奇怪的函数,我会一个一个地介绍。
今天看到他有个图层可以简单实现桑基图,实际上我并不知道这是什么图,我只是看别人画过。

我们今天结合这个图层来展示一下,如何用别人的代码,套自己的数据。

首先,运行别人的例子

他使用的是泰坦尼克的数据

data <- reshape2::melt(Titanic)
head(data)

这是一个数据框,前面四列都是分类变量,告诉我们这个数据能分成几类。

要想正确使用图层,需要进行数据的变换,ggforce中内置了一个函数做这个事情,这个函数的第二个参数,指定哪些类别是要展示在x轴上的,这里是1到4列。

data <- gather_set_data(data, 1:4)
head(data)

现在这个数据变成了这个样子,后面的是多出来的数据,然后就可以画图的了。

library(ggplot2)
library(ggforce)
ggplot(data, aes(x, id = id, split = y, value = value)) +
  geom_parallel_sets(aes(fill = Survived), alpha = 0.3, axis.width = 0.1) +
  geom_parallel_sets_axes(axis.width = 0.1) +
  geom_parallel_sets_labels(colour = 'white')

通过用生存的信息给图上色,我们能够很直观地看出泰坦尼克号上人员的生存状态。

接着,尝试对接自己的数据

这个数据跟TCGA 基因和临床信息结合的例子比较像,正好我手上有这个数据,就来试一下。


最后一列是基因的表达量,前面是临床信息。这个数据几乎不需要任何修改直接可以用刚才的代码。
我们还用到了factor排序的功能来调整横坐标的顺序。
因子(factor)就像贤内助,让你始终分清主次,拨开云雾。
library(ggplot2)
library(ggforce)
data <- gather_set_data(data, 1:6)
data$x <- factor(data$x,levels = c("Survived","gene","sample","age","gender","stage"),ordered = F)
ggplot(data, aes(x, id = id, split = y, value = value)) +
  geom_parallel_sets(aes(fill = Survived), alpha = 0.3, axis.width = 0.1) +
  geom_parallel_sets_axes(axis.width = 0.2) +
  geom_parallel_sets_labels(colour = 'white')

但是觉得这个图虽然新颖,但是放在这里也不是很合适。我认为,这个图应当用于microRNA以及其靶基因的展示,第三列再方式富集分析的条目就比较合适了,当后面碰到了microRNA的数据我们再来造。

现在看来,只要是别人教程里面的图我们都能够复现,我们只要考虑自己的数据适合用哪种图展示就可以了。

刚才在写编辑帖子的时候,我们家的房子在摇动,经历过2008年5月12号的那个大地震后,我们相对比较淡定,妻子说要下楼,大概30s后停住了。今天的震感和那天的极为相似,震级应该不算小,希望大家都平安。

我是果子,明天见。

相关文章

  • 桑基图(Sankey)的简单实现

    ggforce这个R包一身都是宝,之前的贝塞尔曲线就来自于这个包。无处不在的贝塞尔曲线 里面还有很多奇怪的函数,我...

  • 桑基图怎么看怎么画(附R代码)

    什么是桑基图 桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程...

  • 桑基图在单细胞数据探索中的应用

    什么是桑基图 桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程...

  • 利用ggforce绘制桑基图(Sankey diagram)

    什么是桑基图? 百度百科:桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特...

  • Tableau之桑基图基础版

    桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的...

  • 如何利用Data Analytics快速制作桑基图?

    桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的...

  • 桑基图

    桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的...

  • R绘图(5): 一文学会桑基图的画法

    桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的...

  • Tableau 集锦

    Tableau | 南丁格尔玫瑰图 Tableau | 桑基图(Sankey) Tableau | 地图 Tabl...

  • 认识桑基图

    这就是桑基图,是用于描述一组值到另一组值的流向的图表。 一、桑基图的定义 桑基图(Sankey diagram),...

网友评论

    本文标题:桑基图(Sankey)的简单实现

    本文链接:https://www.haomeiwen.com/subject/vbutqctx.html