R语言多层桑基图_科学网—R语言实现桑基图绘制 - 周运来的博文

桑基图是一种展示数据流量的流程图,通过线条宽度体现数据量大小。本文介绍了桑基图的起源、特点,并以拿破仑东征俄国的信息图为例子展示其优势。接着,使用R语言的ggalluvial包演示了如何绘制多层桑基图,展示了不同层级的数据分布情况。
摘要由CSDN通过智能技术生成

什么是桑基图

桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,比较适用于用户流量等数据的可视化分析。因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图”。

用一个故事来介绍一下桑基图:

这个非常著名的图是Charles Minard在1869年所作的拿破仑东征俄国的信息图。Charles Minard是信息图表的之父,他是信息图领域的创始者。这张图描绘的是拿破仑在1812到1813年进攻俄国的情况。它的背景是一个真实的地图,西边是波兰的边境,东边是莫斯科。图上那条主线的宽度代表拿破仑军队的人数,黄色表示进攻路线,黑色表示撤退的路线: 他开始于42万人,在向莫斯科进军的过程中丧失了很多人,到达莫斯科时只剩下10万人,而最后从莫斯科活着返回的只剩下1万人。

为什么说这个图好呢,因为除了主线的宽度之外,这张图还告诉了你更多的东西。画面下面的折线图告诉你当时的温度,其中最高的点是0度,最低到达过零下30度,回城的黑线周围嗨标注了月份,可以看出,拿破仑的军队在达打到莫斯科的时候已经是将近十月分了,等到完全撤离俄国已经是12月份了,如果你仔细观察,会发现在撤退过程中他们路过了一条叫Studienska的河,军队人数在河两岸出现了剧减,原来那个时候天气寒冷,军队长促情况下淌水过河,于是在这条寒冷的河中冻死了很多人。根据Edward Tufte所总结的信息设计原则&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于R语言多层桑基图绘制,你可以使用`ggalluvial`包来实现。这个包提供了一种直观的方式来展示微生物组分类学及丰度的信息。 首先,你需要安装`ggalluvial`包。可以使用以下代码安装: ```R install.packages("ggalluvial") ``` 安装完成后,你可以加载这个包: ```R library(ggalluvial) ``` 接下来,你需要准备绘制桑基图所需的数据。通常,你需要一个数据框,其中包含了不同分类学级别的分类信息和相应的丰度值。 例如,假设你有以下示例数据: ```R data <- data.frame( Kingdom = c("Bacteria", "Bacteria", "Bacteria", "Archaea", "Archaea"), Phylum = c("Proteobacteria", "Firmicutes", "Actinobacteria", "Euryarchaeota", "Crenarchaeota"), Class = c("Alphaproteobacteria", "Clostridia", "Actinobacteria", "Methanobacteria", "Thermoprotei"), Abundance = c(0.4, 0.3, 0.1, 0.05, 0.15) ) ``` 接下来,你可以使用`ggplot`函数创建一个基础的绘对象,并使用`geom_flow`函数来添加桑基图的流动路径: ```R ggplot(data, aes(axis1 = Kingdom, axis2 = Phylum, axis3 = Class, weight = Abundance)) + geom_flow() ``` 这将创建一个简单的桑基图,其中不同分类学级别之间的流动路径根据丰度值的权重进行调整。 你可以根据需要进一步自定义绘,例如添加标签、调整颜色等。`ggalluvial`包提供了很多选项来自定义桑基图的外观和布局。 希望这个回答能帮到你!如果你有任何其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值