使用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
相关产品推荐
相关产品推荐

