ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ggsankey:R 语言三步画出数据流可视化图的快速指南

ggsankey:R 语言三步画出数据流可视化图的快速指南 ggsankeyR 语言三步画出数据流可视化图的快速指南【免费下载链接】ggsankeyMake sankey, alluvial and sankey bump plots in ggplot项目地址: https://gitcode.com/gh_mirrors/gg/ggsankey想同时讲清数据流向哪、流了多少柱状图和饼图都无能为力。ggsankey 是一个 R 语言的 ggplot2 扩展包用桑基图Sankey diagram做数据流可视化节点宽度代表量曲线宽度代表流量十行代码就能画出第一张图。 先跑起来装好包、准备一张阶段 分组的宽表第一张桑基图就出来了。# install.packages(devtools) devtools::install_git(https://gitcode.com/gh_mirrors/gg/ggsankey)下面这段用了内置的mtcars数据library(ggsankey) library(dplyr) df - mtcars %% make_long(cyl, vs, am, gear) ggplot(df, aes(x x, next_x next_x, node node, next_node next_node, fill factor(node))) geom_sankey() scale_fill_discrete(drop FALSE)逐部分看输出cyl、vs、am、gear四列变成从左到右的四个阶段每列是一个 stage。每个竖直小矩形是一个节点node高度对应该组内的观测数量。连接两列的曲线是流动flow宽度正比于流过的观测数。fill factor(node)按节点着色便于顺着一条色带追踪某组车在各阶段的去向。scale_fill_discrete(drop FALSE)保证图例里不丢掉任何节点层级。按场景选方案要展示多对多的流量路径用make_long()把宽表的列转成长表再交给geom_sankey()。数据要求每行有x、next_x、node、next_node四个美学最后阶段的next_node为NA用make_long()生成时这些都会自动处理实现见 R/sankey.R。要强调连续流动的过程把几何换成geom_alluvial节点之间没有间距色带从 y0 往上堆叠更像一条河。适合展示业务状态随环节连续迁移的过程配色和标签写法与桑基图一致。要对比各组的规模随时间变化用geom_sankey_bumpx 轴是时间除node外再给一个数值美学比如 GDP值大的组会顶到值小的组上方位置和高度同时传达趋势。让效果更好的细节flow.alpha流动曲线透明度设为 0.6 可明显减轻交叉处的糊成一片。node.color/node.fill单独控制节点边框与填充色flow.*前缀参数则只管曲线。width与space分别调节点宽度和节点间纵向间距。geom_sankey_label()把节点名放到节点正中配合theme_sankey()得到极简风格。容易踩的坑图例里少了几个节点ggplot2 默认丢弃未使用的因子层级加scale_fill_discrete(drop FALSE)即可。最后一个阶段没有流动线流出next_node在末阶段必须是NA手工拼数据时漏掉这一步流动就会断头交给make_long()生成最稳。直接用宽表绘图报错geom_sankey只认长表格式先make_long()再画图。如果你日常用 ggplot2、又需要向别人解释数据在不同阶段之间的流量ggsankey 能帮你把这类图做进任何报告。现在就拿一份手头的流向表用户路径、预算分配都行先用make_long()加geom_sankey()画一张最小图再按上面的参数逐步调。【免费下载链接】ggsankeyMake sankey, alluvial and sankey bump plots in ggplot项目地址: https://gitcode.com/gh_mirrors/gg/ggsankey创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进