You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

两阶段节点元素转移占比图的名称及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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:55:30