用 Excel 做桑基图

Excel 没有桑基图这种图表类型,历来的版本都没有。行得通的办法是 先在表格里把数据整理好,形式非常简单,再交给会画的工具。

免费,在浏览器中运行,无需注册。

数据该整理成什么样

每行一条流,三列:从哪里开始、到哪里结束、承载多少。 做出第一张图,有这些就够了。

起点终点数值
采伐锯木厂120
采伐出口30
锯木厂锯材72
锯木厂副产品48

节点不需要单独声明:它们由“起点”和“终点”两列中出现的名称推导得出。 务必逐行写得完全一致——“锯木厂”和“锯木厂 ”(多一个空格) 会变成两个不同的节点,这是第一次导入时最常见的错误。

三条规则,保证图是对的

  • 只用一种单位。要么吨,要么欧元,不要混在同一张表里: 否则宽度之间不再可比。
  • 进多少,出多少。每个中间节点,流入之和必须等于流出之和。 上面的例子里,锯木厂收到 120,送出 72 + 48。
  • 数据里不要放合计。一行“合计”被当作流导入,会生成一个幽灵节点, 把数量算两遍。合计是算出来的,不是搬进来的。

如果表格对不上怎么办?

只要数字来自多个来源,对不上就是常态。有两种态度。糟糕的那种: 把差额塞进“其他”或“杂项”,等于把不确定性藏起来。正确的那种:处理它。

由于节点的输入等于输出,一个被已知值包围的缺失值是完全确定的——工具会把它算出来。 若同时缺少多个,或者彼此矛盾,数据调和算法会在自洽的 取值组合中,找出与你的数据最接近的一组,并按你对每个数据的信任程度加权。 哪些是实测的、哪些是推算的,全程留有记录。

在 Excel 里得不到的东西

流传的那些变通做法——堆积条形图、手工画的形状、第三方插件——产出的是一张凝固的图片。 它们既不会自动排布节点,也不会在图变密时收起分支,没有悬停交互, 数字一改也不会重算。在一张几十条流的图上,工作时间的差距是以天计的。

三列之外

最简格式够用来起步,但一个工作簿还能承载更多:同一张图的多套数值 (年份、情景、地区)、分组层级、单位、不确定度、颜色。 案例库(英文)里发布的研究,就是这样做出来的。