「你的气泡图在系统性地撒谎」:面积编码被感知开了一次方,误差是有方向的
【锚点】只钉一个判断:在气泡图、饼图、树图(treemap)里,误差不是随机噪声——【面积编码会被视觉系统按幂律压缩,指数约 0.7】,于是「面积翻倍」读起来只有「约 1.6 倍」。这不是读者不认真,是编码通道本身的问题。
【一】先把感知通道的排序摆出来 【显式】 Cleveland & McGill(1984, JASA)让被试做两两数值比较,按判断准确率给「基本感知任务」排序:位置(共同标尺)> 位置(非共同标尺)> 长度/角度/斜率 > 面积 > 体积 > 色相。 【显式】面积排在位置之后,这不是审美偏好,是实测出来的排序。所以「饼图不如条形图」不是风格问题,是通道排序问题。
【二】面积为什么输:不是「难」,是「错得有方向」 【隐式】 如果面积只是噪声大,误差应当正负抵消、均值回归。但 Flannery(1971)让被试估计圆的大小,发现的是系统性低估;Stevens 的幂律 ψ = k·φα 对面积给出 α ≈ 0.7–0.8。 把这两条拼起来(只需推理一步):面积 A 翻倍 → 主观量级 ≈ 20.7 ≈ 1.62。低估是单向的,而且随比值增大而放大。 【流程节点链路】数据值 → 编码为圆面积 A ∝ v → 视网膜图像上的面积 → 视觉系统的幂律压缩(α≈0.7) → 主观量级 ψ ∝ A0.7 → 读者口头报告的「倍数」 → 比较/排序判断。这六个节点缺任何一个,都得不出「误差有方向」这个结论——只看到「面积」和「判断」两个节点,你只会说「面积不太准」。
【三】那个最流行的「修正」其实没修好 【细微】 很多人知道「用半径映射数值是错的」,于是改成 A ∝ v。这在数学上正确,在感知上仍然被压缩:读者读到的还是 v0.7。 更糟的是 r ∝ v(即 A ∝ v²):面积按平方增长,感知是 A0.7 = v1.4——误差方向反了,量级比「正确」画法更大。 【细微】要发现这一点,必须同时比对两处:编码规则(代码里写的是 r 还是 A)和感知指数(读者端发生了什么)。只看代码,永远看不出来。
【四】那要不要「故意夸大」来补偿? 【极难发现】 如果感知是压缩的,一个很诱人的推论是:把面积按 1/0.7 ≈ 1.43 次方放大,让主观量级回到线性。 这暴露一个反直觉的盲点:图表的「诚实」到底定义在【数据空间】还是【感知空间】?补偿之后,图在数据空间是错的(面积不再 ∝ 数值),在感知空间反而是对的。而几乎所有可视化规范都默认前者。 我的立场:不补偿。理由不是美学,是可复现性——α 随刺激类型、年龄、训练变化,你无法在图上标注「本图已按 α=0.7 补偿」,读者也无法核验这个系数。一张不能被核验的图,比一张被压缩的图更危险。
【五】可操作的替代方案 【显式】 需要精确比较时,把面积换成位置:Cleveland dot plot(一条共同标尺 + 点),这是感知排序里的第一名通道。气泡图、树图留给「量级感」和「分区」,不要留给「哪个大 20%」。 如果必须保留气泡:把关键量级直接标数值,或按数值分箱(discrete bins),让读者比较「桶」而不是连续面积——分箱把连续的面积判断换成了离散的位置/标签判断。
【结尾·值得辩论】 如果感知通道本身是幂律压缩的,那么「数据空间诚实」与「感知空间诚实」必然冲突,你只能选一个。我选数据空间 + 换通道(位置),而不是留在面积上做补偿。但这个选择的推论很硬:所有依赖面积/角度/体积的图形(饼图、树图、气泡、词云)在「精确比较」这个任务上应当整体退场。你同意这个推论吗——还是说「量级感」本身就值得为它牺牲可比较性?







0 評論