ARTICLE DETAIL

资讯详情

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

数据可视化避坑:别再用双Y轴误导人

数据可视化避坑:别再用双Y轴误导人 一、背景故事一张图让全组相信了一个不存在的因果某次周会一位同事展示了一张双Y轴折线图左轴是某工序良率右轴是某台设备的颗粒计数。图上两条线看起来几乎完美地反向运动视觉冲击很强。结论顺理成章颗粒上升导致良率下降建议对该设备加严清洗频次。会上没人质疑当场就定了行动项。两周后清洗频次加严了颗粒数确实降下来了但良率没有任何改善。回头做相关性计算两个变量的皮尔逊相关系数只有负0.21在样本量24的情况下p值0.32完全不显著。那张图上看到的「强相关」是把右轴范围从30到52、左轴范围从91.0到93.2这样精心其实是无意选择的结果。这件事的代价不算大就是浪费了两周和一些清洗耗材。但它暴露的问题很典型双Y轴图给了作图者两个自由参数两条轴各自的范围而这两个参数可以让任意两组数据呈现出任意程度的视觉相关。换句话说双Y轴图能证明的东西本质上什么都证明不了。二、技术原理视觉编码与双Y轴的结构性缺陷2.1视觉编码的精度层级Cleveland和McGill在图形感知研究中给出了一个被广泛引用的结论人对不同视觉通道的定量判断精度是有明确排序的。从高到低依次是共同基准线上的位置比如同一坐标轴上的点、无共同基准的位置、长度、角度与斜率、面积、体积、颜色深浅。这个排序是所有图表选型的基础。按这个排序推论要比较两组数据的大小关系把它们放在同一坐标轴上共同基准是最准确的双Y轴恰恰破坏了共同基准把两组数据放在两个不同的位置系统里读者的视觉系统仍然会不自觉地按「共同基准」去解读于是产生系统性误判。这不是读者不专业是图表设计违反了感知规律。2.2双Y轴的两个自由度问题定量地看这个问题。设左轴显示变量X范围是[a1, b1]右轴显示变量Y范围是[a2, b2]。两条曲线在图上的相对位置和交叉形态完全由这四个参数决定。只要调整右轴的范围与偏移就可以让Y曲线相对X曲线上下平移、拉伸压缩从而制造出「同步」「反向」「领先」「滞后」等任意视觉印象。更麻烦的是绝大多数绘图工具默认会自动缩放坐标轴到数据范围这意味着这两个自由参数是被工具随机决定的连作图者自己都不知道自己在暗示什么。所以双Y轴图的误导往往不是恶意的而是无意识的这让它更危险。2.3另外两个高频陷阱第一个是坐标轴截断。把纵轴从0开始改成从91开始0.5个百分点的波动就会被放大成满屏的剧烈震荡。截断本身不一定错——良率从0开始画确实没有意义——但必须显式标注并且在同一份报告里对同类图表使用一致的截断策略否则读者无法横向比较。最恶劣的做法是同一页里A图截断B图不截断让A看起来波动巨大而B平稳。第二个是用面积或角度编码定量信息。饼图用角度、气泡图用面积、三维柱状图用体积这三者在感知精度排序里都很靠后。人对角度的判断误差可以达到实际值的20%以上对面积的判断还会受到形状影响。工程报表里需要精确比较的场合一律用条形图长度编码替代饼图。饼图唯一还算合适的场景是展示两三个类别的粗略占比。图1左图用双Y轴制造了强反向相关的错觉右图对同一组数据做z-score标准化后放在同一坐标系真实关系一目了然。表1常见图表错误、成因与替代方案错误类型典型表现为什么误导推荐替代方案双Y轴良率与颗粒数画在一张图上两轴范围可任意调制造伪相关z-score标准化后同轴或上下双图共享X轴坐标轴截断未标注纵轴从91开始且无提示把微小波动放大为剧烈震荡显式标注截断同类图表用统一范围饼图比较多类别8个缺陷类型的占比饼图角度判断误差大无法排序按数值排序的横向条形图三维柱状图带透视效果的立体柱体积编码加透视失真双重误导二维柱状图需要第三维时用分面彩虹色阶表达连续量用红黄绿蓝表示数值高低色相无内在顺序且不色盲友好单色渐变或viridis类感知均匀色阶折线图连接离散类别不同产品型号用折线相连暗示了不存在的连续关系柱状图或点图不加连接线三、现状分析Fab报表里最常见的五类问题第一类是「一图说三件事」。为了在有限的PPT页面里塞更多信息一张图上叠加良率、产量、设备稼动率三条线配两条甚至三条Y轴。这类图在汇报现场几乎无人能真正读懂大家看的是汇报者的口头解释图只是背景板。既然如此不如拆成三张小图。第二类是配色混乱。同一份周报里第3页用红色表示良率、第7页用红色表示异常数量读者的颜色语义记忆被反复打断。规范做法是全报告统一色板每个业务概念绑定固定颜色并且这套色板要经过色盲模拟检查。第三类是缺少上下文。一张显示「本周良率92.3%」的大数字没有目标值、没有上周对比、没有控制限读者无法判断这是好还是坏。任何数字都需要至少一个参照系这是数据呈现的最低要求。第四类是精度虚假。把良率写成92.3417%而实际样本量只有200片这个精度在统计上毫无意义反而暗示了一种不存在的确定性。正确做法是按样本量决定显示精度并在关键数字旁给出置信区间或误差棒。第五类是图表与结论脱节。图表标题写「某工序良率趋势」这只描述了内容没有传达结论。更有效的做法是把结论写进标题「某工序良率连续三周下滑累计1.8个百分点」。读者的注意力有限标题是唯一能保证被读到的文字。四、瓶颈问题明知有坑为什么还在跳【原因一】工具默认值的引导。Excel、Power BI这类工具把「次坐标轴」放在很显眼的位置一键就能加而正确的做法标准化、分面需要多几步操作。默认值的设计会强烈影响使用者的行为这是产品设计的问题但代价由数据消费者承担。【原因二】把「信息密度高」当成专业。很多工程师认为一张图承载的信息越多越显得工作扎实于是不断往上叠。实际上判断报表质量的标准应该是「读者做出正确判断的速度和准确率」而不是图上有多少条线。【原因三】汇报场景的激励扭曲。如果汇报的目标是说服而不是呈现事实那么能制造视觉冲击的图表就有了生存土壤。这个问题不能靠技术解决要靠评审机制任何用于决策的图表必须同时提供底层数据的获取路径让人能够复核。【原因四】缺少统一模板与审图环节。每个人自己做图风格各异错误各异。成熟团队的做法是提供绘图函数库和报表模板把正确的做法变成默认路径同时在报告发布前设一道审图检查哪怕只是一张五项清单。【原因五】没有人为误读负责。图画错了导致决策失误通常追责到决策者而不是作图者所以作图这件事长期缺乏质量压力。改变这一点的办法是把关键报表的作图规范写进流程并在决策失误复盘时把「信息呈现是否恰当」作为固定检查项。五、解决方案三种替代方案与实现要点5.1方案一标准化后同轴对比把两个量纲不同的变量各自转成z-score减去均值再除以标准差放在同一坐标轴上。优点是消除了尺度自由度视觉上的接近程度直接反映真实的相关程度缺点是纵轴失去了物理意义读者看不到绝对值。适用场景是探索相关性、比较变化节奏不适合需要读取具体数值的场合。使用时必须在图注里说明标准化的口径与基期。5.2方案二指数化到共同基期把每个变量的第一个观测值或某个基期均值定为100后续值按比例换算。优点是纵轴有直观含义相对基期的百分比变化既能同轴比较又保留了可解释性。这是财经图表里的标准做法在工程报表里同样好用特别适合比较不同量纲指标的改善幅度。注意基期的选择要有依据不能挑一个对自己有利的低点做基期。5.3方案三小倍数与共享坐标轴把多个变量拆成上下排列的多个子图共享同一条X轴。每个子图有自己合适的Y轴范围不存在尺度操纵同时因为X轴对齐时间上的对应关系一目了然。这是我最推荐的方案因为它同时满足了「保留物理量纲」和「不制造伪相关」两个要求。在matplotlib里用subplots配合sharex参数两行代码就能实现。5.4 matplotlib实现的六条硬规范第一建立团队统一的绘图函数库把配色、字号、网格、边框样式封装成默认参数禁止每人自己调第二色板固定分类数据用离散色板不超过6色连续数据用感知均匀色阶如viridis禁止用jet或彩虹色第三所有图必须有标题、轴标签与单位缺一不允许输出。第四坐标轴范围显式设定而非依赖自动缩放同类图表跨报告保持一致第五涉及推断的图必须带不确定性表达误差棒、置信带或样本量标注第六输出规范统一报告用图DPI不低于150中文字体统一指定避免在不同机器上出现方块字。这六条做成代码里的检查函数不满足就抛异常比写在文档里管用得多。六、实战案例一次周报改版对象是我们部门的良率周报固定14页面向工艺、设备、质量三个部门约30人。改版前的问题诊断14页里有6张双Y轴图、3个饼图其中一个有11个扇区、4张纵轴截断但未标注的图、全报告用了17种颜色。第一步做基线测量。设计了8道判读题例如「A工序和B工序哪个本周恶化更明显」「设备X的异常是否与良率下滑同期发生」请12位常规读者在限定90秒内作答。结果平均正确率62%也就是说关键结论的误读率高达38%。这个数字在会上比任何设计理论都有说服力。第二步定规范。色板收敛到6色每个业务概念绑定固定颜色并做色盲模拟验证双Y轴全部改为上下分面共享X轴饼图全部改为排序条形图所有截断坐标轴加显式标注每张图的标题改写为结论式。同时把这些规范封装进一个内部绘图库提供七个常用图表的标准函数。第三步做迁移。14页里实际保留了9页砍掉的5页是「有人做但没人看」的内容通过前面的读者调研确认。页面减少但信息量没有减少因为原来一张图挤三个变量的现在拆成了分面。这一步的阻力主要来自内容被砍的同事解决办法是把这些内容移到可点击的附录链接里需要的人自己去看。第四步验证。用完全相同的8道判读题、同样12位读者、同样90秒限时在改版后的周报上重测平均正确率从62%升至93%误读率从38%降至7%平均作答时间从87秒降至54秒。另外做了个主观调查11位读者认为新版「更容易找到需要的信息」。图2指数化到共同基期后三个不同量纲的指标可以在同一坐标轴上比较纵轴仍保留明确含义不存在尺度操纵空间。表2报表发布前的审图检查清单五分钟可完成检查项检查内容不合格表现处理方式共同基准是否存在双Y轴或多Y轴两条以上纵轴改为分面共享X轴或标准化同轴坐标轴截断是否标注同类图是否统一起点非零且无提示加截断标注统一同类图的轴范围编码方式定量比较是否用了角度或面积饼图、三维柱、气泡图改为长度编码的条形图颜色语义同一概念是否全报告同色同色表示不同含义套用统一色板做色盲模拟检查不确定性推断类结论是否有误差表达只有点估计无区间补充误差棒、置信带或样本量标题结论标题是否传达结论而非仅描述标题只写变量名改写为一句话结论含关键数字七、实施效果改的是图省的是决策成本量化效果前面已经给出误读率从38%降到7%判读时间缩短38%。换算成实际价值这份周报每周有30人阅读每人节省半分钟不算什么真正的价值在于避免了因误读导致的错误行动项。改版后半年内周会上因图表理解分歧引发的争论明显减少会议时长平均缩短了12分钟。另一个意外收获是数据质量问题被暴露出来。改版过程中要给每张图加样本量标注结果发现有三张图的数据源样本量长期不足某些低产品型号每周只有个位数批次基于这么小的样本做趋势判断本身就不可靠。这三张图后来改成了按月汇总。可视化规范的一个副作用是它会逼着你面对数据本身的问题。推广层面的经验是不要试图靠培训改变习惯要靠工具。我们提供绘图函数库之后新做的图自然就符合规范了因为调用标准函数比自己调参数省事。规范文档发出去半年真正记住的人不到三成而函数库上线一个月八成的新图表就已经是合规的。让正确的路径成为最省力的路径这是推行任何规范的通用原则。最后回到双Y轴。有人会问难道双Y轴一次都不能用吗有两种例外一是两个变量本身有确定的换算关系比如摄氏度与华氏度、厚度与折射率乘积此时右轴不是独立的自由度二是探索阶段自己看数据怎么方便怎么来。禁止的是把双Y轴图放进用于决策的正式报告里因为在那个场景下你无法控制读者会从两条轴的相对位置里读出什么。八、常见问题答疑工程落地里最常被追问的几件事Q1领导就是喜欢看双Y轴怎么办不要正面对抗用替换演示。做两版同样数据的图一版双Y轴一版分面共享X轴同时把相关系数与p值标在图注里让对方自己看到视觉印象与统计事实的差距。多数情况下一次这样的对照演示比十次道理管用。如果确实无法改变至少在双Y轴图上把两条轴的范围显式标注并注明相关系数。Q2matplotlib中文显示方块最稳妥的解决办法是什么不要依赖系统默认字体显式指定字体文件路径。推荐做法是在绘图库的初始化函数里用font_manager加载指定的中文字体文件如SimHei设置font.family为该字体名同时把axes.unicode_minus设为False避免负号变方块。把这段初始化代码封装进团队绘图库所有图自动生效不要每个脚本各写一遍。Q3数据量很大时折线图会糊成一团怎么处理三种做法。一是降采样按时间窗口聚合同时保留每个窗口的最大最小值形成范围带二是用透明度把线宽调细、alpha调到0.1到0.3让密集区域自然形成深浅三是改用二维直方图或密度图用颜色表示密度。通常前两种组合使用效果最好主线画聚合后的中位数背景用半透明范围带表示分布。Q4报表里到底要不要放Cpk这类复合指标要放但必须配上下文。单独一个Cpk等于1.28没有信息量读者不知道它是在变好还是变坏、样本量多少、分布是否正态。正确做法是给出Cpk的趋势线、置信区间、以及底层的直方图缩略。如果版面有限只能放一个数字那就放Cpk的变化量而不是绝对值因为变化量对决策更有指导意义。Q5团队推行绘图规范第一步该做什么先做一次基线测量不要先写规范。找8到10个真实的判读问题请实际读者限时作答统计正确率与耗时。这个数字是推动改变最有力的证据也是后续验收的基准。有了基线之后再写规范、做函数库最后用同一套题目复测。整个过程大概两到三周比空谈设计原则有效得多。九、配套资料与实战工具包本文涉及的脚本、模板、检查清单已整理成配套资料包均为可直接在工厂落地使用的版本拿到后按自己产线的实际参数替换即可不需要从零搭。点击文章上方「VIP资源」下载区即可获取以下5项配套资料持续更新MES/SPC/EAP/良率实战资料团队级matplotlib绘图函数库含7个标准图表函数与中文字体配置统一色板定义文件含色盲模拟验证结果与色值表报表审图检查清单六项五分钟可完成图表判读能力基线测评题库8道题含评分标准双Y轴替代方案对照示例集标准化、指数化、小倍数三种实现代码────────────────────────────────────────本文首发于博客半导体智能制造| MES工程师实战笔记你在自己的产线上遇到过类似情况吗是怎么处理的欢迎在评论区留下你的做法我会挑典型问题在后续文章里展开。标签数据可视化| matplotlib |双Y轴|报表设计|数据分析|工程实践
返回列表