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

使用ggalluvial绘制节点取值不同的冲积图的实现方法

R语言绘制活动序列冲积图优化方案

现有代码失效原因

  • 未加载ggalluvial扩展包:ggplot2核心包不提供geom_flow()、geom_stratum()这两个冲积图专用图层,需额外加载依赖包
  • 数据格式适配问题:示例数据为分组表(grouped_df),且存在大量代表流程提前终止的NA值,默认逻辑会将NA识别为无效值直接剔除,同时未指定每条冲积流的分组依据,导致流的连接逻辑错误
  • 缺少节点标注图层:原有代码未添加文本标注图层,无法在节点上显示对应的活动名称

注意:运行代码前请先安装依赖包,未安装时可执行install.packages(c("dplyr", "ggplot2", "ggalluvial"))完成安装

修正后可运行代码

# 加载依赖包
library(dplyr)
library(ggplot2)
library(ggalluvial)

# 数据预处理
df_plot <- df %>%
  ungroup() %>% # 解除数据原有分组,避免干扰绘图逻辑
  # 将步骤字段中的NA统一替换为「流程终止」,也可根据业务需求替换为其他标识
  mutate(across(starts_with("Step"), ~ifelse(is.na(.), "流程终止", .)))

# 绘图
df_plot %>%
  ggplot(aes(
    axis1 = Step1,
    axis2 = Step2,
    axis3 = Step3,
    axis4 = Step4,
    axis5 = Step5
  )) +
  # 绘制流:按活动记录独立成流,按第一步活动类型填充配色
  geom_flow(aes(fill = Step1), width = 1/4, color = "white") +
  # 绘制步骤节点层
  geom_stratum(width = 1/4, fill = "#e0e0e0", color = "#333333") +
  # 添加节点活动名称标注
  geom_text(stat = "stratum", aes(label = after_stat(stratum)), size = 3.2) +
  # 设置x轴刻度对应步骤编号
  scale_x_discrete(
    limits = paste0("Step", 1:5),
    labels = paste0("步骤", 1:5),
    expand = c(0.03, 0.03)
  ) +
  labs(
    title = "活动执行序列路径冲积图",
    x = "执行步骤",
    y = "活动记录数",
    fill = "初始活动类型"
  ) +
  theme_bw()

可选调整方向

  • 若不需要展示提前终止的流程,可删除NA替换逻辑,在geom_flow和geom_stratum中设置参数na.rm = TRUE即可
  • 可修改fill映射的字段调整配色逻辑,比如映射为最终完成的活动类型,或单独为每条路径分配颜色
  • 调整width参数可修改节点的宽度,调整geom_text的size参数可修改标签字号,可根据数据量大小适配标签显示效果

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:45:51