ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

R 数据流可视化实战指南:用 ggsankey 快速画出桑基图、冲积图与 Bump 图

R 数据流可视化实战指南:用 ggsankey 快速画出桑基图、冲积图与 Bump 图 R 数据流可视化实战指南用 ggsankey 快速画出桑基图、冲积图与 Bump 图【免费下载链接】ggsankeyMake sankey, alluvial and sankey bump plots in ggplot项目地址: https://gitcode.com/gh_mirrors/gg/ggsankeyggsankey 是一个基于 ggplot2 的 R 语言数据流可视化包让你用寥寥几行代码就能画出专业的桑基图Sankey、冲积图Alluvial和桑基 Bump 图。如果你的数据中存在从一个阶段流向下一个阶段的关系——用户从哪来、到哪去资金如何分配、资源流向何方——它都能在一张图里讲清楚。为什么你需要它四个典型的数据流痛点在开始之前先对号入座一下。下面这些场景你一定在报告里见过用户路径分析访客从落地页进站后经过哪几个页面、最终流失在哪一步业务流程追踪物料、工单或审批流在不同环节之间如何流转瓶颈出现在哪资源分配盘点预算、人力从一个中心池子分到哪些部门比例是否合理时间趋势演变某个分组如各大洲经济体量随时间如何此消彼长这类数据的共同点是不是简单的一个值对应一个值而是多对多的流动关系。用普通柱状图或折线图很难表达量的传递而数据流可视化恰好补上了这块空白。30 秒速览什么是数据流可视化三种图有何区别数据流可视化的核心逻辑很简单把阶段排在横轴上每个阶段里按分组切分出一段段节点Node节点之间用粗细随流量变化的**流线Flow/Link**相连。节点越宽代表流量越大。一张图看懂三个关键要素包内提供三种图形按需选择即可图表类型对应函数布局特点适合场景桑基图geom_sankey()节点居中排布节点之间留有间隙流向清晰展示多维数据间的多对多流转最经典冲积图geom_alluvial()节点之间无缝衔接从 y0 向上堆叠强调连续流动视觉更河流感桑基 Bump 图geom_sankey_bump()分组面积随数值变化变大时会顶到上方时间序列中各分组的规模变化安装准备获取并加载 ggsankey 包ggsankey 目前主要通过源码方式安装。先装好 devtools然后执行下面任一命令# 官方来源 devtools::install_github(davidsjoberg/ggsankey) # 或使用国内加速镜像 devtools::install_git(https://gitcode.com/gh_mirrors/gg/ggsankey)安装完成后加载即可使用它还自带了管道操作符%%library(ggsankey) library(ggplot2)从零到一三步画出第一张桑基图整个流程固定为三步转格式 → 画基础图 → 美化标注。以内置数据集mtcars的车型配置为例。第一步用 make_long 把宽格式数据转成长格式geom_sankey()不认识普通的宽表它要求每行数据说明我在哪个阶段、属于哪个分组、下一步流到哪里去。手动构造太麻烦make_long()会替你完成df - mtcars %% make_long(cyl, vs, am, gear, carb)只需告诉它参与绘制的列名它就会按列的先后顺序生成阶段并自动处理好最后一个阶段之后流向 NA的细节。每行默认计为流量 1也可以指定value参数传入权重列。第二步一个 geom_sankey() 画出基础流线绘图时必须提供四个美学映射x、next_x当前与下一阶段、node、next_node当前与下一阶段的分组ggplot(df, aes(x x, next_x next_x, node node, next_node next_node, fill factor(node))) geom_sankey()运行后你会得到这样一张完整的桑基图五个配置维度之间的流向一目了然第三步加上标签与主题完成度拉满再补两行代码图就能交付了geom_sankey_label()在节点中心放置标签theme_sankey()应用包内自带的极简主题ggplot(df, aes(x x, next_x next_x, node node, next_node next_node, fill factor(node), label node)) geom_sankey(flow.alpha 0.6, node.color gray30) geom_sankey_label(size 3, color white, fill gray40) theme_sankey(base_size 18)至此从一份宽表到一张带标注的专业桑基图总共不到十行代码。一行代码切换冲积图与桑基 Bump 图同样的数据换个几何函数就是另一种风格。冲积图把geom_sankey()换成geom_alluvial()配合geom_alluvial_text()和theme_alluvial()节点便连成一片无缝的河流更适合展示连续的演变过程桑基 Bump 图这是折线排名图 桑基的混合体需要x时间、node分组、value数值三个映射。下例展示各大洲 GDP 总量随时间的此消彼长——哪个洲变胖了它自然会被顶到最上面df - gapminder %% group_by(continent, year) %% summarise(gdp round(sum(pop * gdpPercap) / 1e9)) ggplot(df, aes(x year, node continent, fill continent, value gdp)) geom_sankey_bump(type alluvial, space 0, smooth 6) theme_sankey_bump(base_size 16)进阶定制节点与流线的参数控制画完图之后想调细节ggsankey 把参数分成几何属性和美学映射两类思路很清晰。几何参数写在 geom_sankey() 里不随数据变化width节点条的宽度space同一阶段内节点之间的垂直间距smooth流线的曲率值越大转弯越陡type布局模式sankey或alluvialnode.fill/node.color/node.size节点填充色、边框色与边框粗细flow.fill/flow.color/flow.alpha流线填充色、边框色与透明度这些参数既能全局设置如color同时影响节点和流线也能分别指定如node.color只描节点边框美学参数写在 aes() 里随数据变化fill/color通常映射到node节点和流线随之同色label配合geom_sankey_label()显示文字内容shift手动微调节点在 y 方向的位移方便把交叉严重的流线拉开value手动指定每行的流量权重默认每行计 1想查完整参数说明包内的帮助文档在 man/ 目录下核心绘图与数据转换逻辑的源码则在 R/sankey.R都值得翻一翻。小结把流动的关系画出来ggsankey 的价值就是让你用熟悉的 ggplot2 语法把数据如何流动变成一张可进报告、能进 PPT 的专业图表make_long()负责转格式geom_sankey()/geom_alluvial()/geom_sankey_bump()负责出图标签和主题负责收尾。现在打开你的 R 环境挑一份带阶段关系的数据用上面的三步流程画下第一张桑基图吧——你手边的用户路径或资源分配数据可能就差这一张图说清楚。【免费下载链接】ggsankeyMake sankey, alluvial and sankey bump plots in ggplot项目地址: https://gitcode.com/gh_mirrors/gg/ggsankey创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表