两阶段节点元素转移占比图的名称及R语言绘制方法咨询
图表名称与R语言实现方案
一、图表名称
这种展示不同阶段节点间元素转移占比的图表叫做桑基图(Sankey Diagram),它的核心优势是能直观呈现流量(或占比)在不同类别/阶段节点间的流动关系,完全支持前后阶段节点数量不一致的场景。
二、R语言实现方法
R中有多个工具包可以快速绘制这类图表,下面介绍两种常用方案:
1. 使用networkD3包(交互式桑基图)
networkD3可以生成交互式桑基图,支持鼠标悬停查看详细数据,示例代码如下:
# 安装并加载包 install.packages("networkD3") library(networkD3) # 构造示例数据 nodes <- data.frame(name = c("阶段1节点A", "阶段1节点B", "阶段2节点X", "阶段2节点Y", "阶段2节点Z")) links <- data.frame( source = c(0, 0, 1, 1), # 节点索引从0开始 target = c(2, 3, 3, 4), value = c(30, 20, 40, 10) # 转移占比/数量 ) # 绘制桑基图 sankeyNetwork(Links = links, Nodes = nodes, Source = "source", Target = "target", Value = "value", NodeID = "name", fontSize = 12, nodeWidth = 30)
2. 使用ggalluvial包(静态桑基图,基于ggplot2)
如果需要静态桑基图,ggalluvial配合ggplot2是轻量化的选择,示例代码:
# 安装并加载包 install.packages(c("ggplot2", "ggalluvial")) library(ggplot2) library(ggalluvial) # 构造示例数据 df <- data.frame( 阶段1 = rep(c("节点A", "节点B"), each = 3), 阶段2 = rep(c("节点X", "节点Y", "节点Z"), 2), 占比 = c(30, 20, 0, 0, 40, 10) ) # 绘制静态桑基图 ggplot(df, aes(y = 占比, axis1 = 阶段1, axis2 = 阶段2)) + geom_alluvium(aes(fill = 阶段1)) + geom_stratum() + geom_text(stat = "stratum", aes(label = after_stat(stratum))) + scale_x_discrete(limits = c("阶段1", "阶段2"), expand = c(0.1, 0.1)) + theme_minimal()
内容的提问来源于stack exchange,提问作者quesadagranja
相关产品推荐
相关产品推荐

