用 Excel 做桑基图
Excel 没有桑基图这种图表类型,历来的版本都没有。行得通的办法是 先在表格里把数据整理好,形式非常简单,再交给会画的工具。
免费,在浏览器中运行,无需注册。
数据该整理成什么样
每行一条流,三列:从哪里开始、到哪里结束、承载多少。 做出第一张图,有这些就够了。
| 起点 | 终点 | 数值 |
|---|---|---|
| 采伐 | 锯木厂 | 120 |
| 采伐 | 出口 | 30 |
| 锯木厂 | 锯材 | 72 |
| 锯木厂 | 副产品 | 48 |
节点不需要单独声明:它们由“起点”和“终点”两列中出现的名称推导得出。 务必逐行写得完全一致——“锯木厂”和“锯木厂 ”(多一个空格) 会变成两个不同的节点,这是第一次导入时最常见的错误。
三条规则,保证图是对的
- 只用一种单位。要么吨,要么欧元,不要混在同一张表里: 否则宽度之间不再可比。
- 进多少,出多少。每个中间节点,流入之和必须等于流出之和。 上面的例子里,锯木厂收到 120,送出 72 + 48。
- 数据里不要放合计。一行“合计”被当作流导入,会生成一个幽灵节点, 把数量算两遍。合计是算出来的,不是搬进来的。
如果表格对不上怎么办?
只要数字来自多个来源,对不上就是常态。有两种态度。糟糕的那种: 把差额塞进“其他”或“杂项”,等于把不确定性藏起来。正确的那种:处理它。
由于节点的输入等于输出,一个被已知值包围的缺失值是完全确定的——工具会把它算出来。 若同时缺少多个,或者彼此矛盾,数据调和算法会在自洽的 取值组合中,找出与你的数据最接近的一组,并按你对每个数据的信任程度加权。 哪些是实测的、哪些是推算的,全程留有记录。
在 Excel 里得不到的东西
流传的那些变通做法——堆积条形图、手工画的形状、第三方插件——产出的是一张凝固的图片。 它们既不会自动排布节点,也不会在图变密时收起分支,没有悬停交互, 数字一改也不会重算。在一张几十条流的图上,工作时间的差距是以天计的。
三列之外
最简格式够用来起步,但一个工作簿还能承载更多:同一张图的多套数值 (年份、情景、地区)、分组层级、单位、不确定度、颜色。 案例库(英文)里发布的研究,就是这样做出来的。
