Skip to main content

data-visualization-discipline

数据可视化的判断层 SSOT——画任何图表、dashboard、看板之前先加载它,不是画完之后。管"该不该这么画":这张图想让读者得出什么结论、用均值还是中位数、能不能聚合、堆叠还是折线、能不能上双轴、配色与颜色数量、同一实体跨图是否同色同位、表格该留几列。介质无关:HTML 报告页、React/Vue dashboard、PPT 原生图表、matplotlib/plotly/ECharts/D3、渲染成 PNG 的图,一律适用。Use when 动手画图之前,或评审既有图表("这几张图有什么问题"、"图例为什么不一致")。Not for 报告页的排版/组件/交互(用 report-with-html:report-with-html)或 PPT 原生图表的实现与渲染陷阱(用 deck-creator:deck-creator)。

소스 정보

저장소
daymade/claude-code-skills
최근 소스 활동
2026년 10월 21일 21:49
감지된 SKILL.md 언어
중국어
스타
1,496
포크
229

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
8 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
data-visualization-discipline
description
数据可视化的判断层 SSOT——画任何图表、dashboard、看板之前先加载它,不是画完之后。管"该不该这么画":这张图想让读者得出什么结论、用均值还是中位数、能不能聚合、堆叠还是折线、能不能上双轴、配色与颜色数量、同一实体跨图是否同色同位、表格该留几列。介质无关:HTML 报告页、React/Vue dashboard、PPT 原生图表、matplotlib/plotly/ECharts/D3、渲染成 PNG 的图,一律适用。Use when 动手画图之前,或评审既有图表("这几张图有什么问题"、"图例为什么不一致")。Not for 报告页的排版/组件/交互(用 report-with-html:report-with-html)或 PPT 原生图表的实现与渲染陷阱(用 deck-creator:deck-creator)。
# 数据可视化纪律 这是可视化**判断层**的唯一权威源。其他 skill 引用它、不复制它——一条规则出现在两处,就多一个将来会矛盾的地方。 ## 边界:什么归我,什么不归我 | 问题 | 归属 | |---|---| | 这张图想让读者得出什么结论?该用什么图型?用均值还是中位数?能不能聚合?几个颜色? | **本 skill** | | 报告页怎么排、用哪个组件、什么皮、交互键位、浏览器渲染自验、认可语料 register | `report-with-html:report-with-html` | | python-pptx 怎么落原生图表、次轴折线在 QuickLook 不渲染、中文掉字 | `deck-creator:deck-creator` | | 图表用什么库实现 | 当前项目已声明的图表栈;没有就先调研选维护中的库,**禁止手搓图表引擎** | 参考文件清单见下一节末尾的表(按阶段锚定,一处维护)。 --- ## 这份 skill 怎么组织的(**加规则之前先读这节**) 规则按**你在什么时刻会想起它**排,不按主题分类:**定意图 → 验数据 → 选形 → 编码 → 交付前自检**。 **阶段 1–4 各有一个「交接检查」,阶段 5 是交付闸(9 条)——合起来五个检查点,交付前那道最重。** 这不是"一道闸抓所有规则"——那会把闸撑到十几条,而检查清单一超过 9 条就开始被跳过(Gawande)。成熟做法是**多个停点各管各的**:飞机有滑行、起飞、巡航、落地四张清单,不是一张。所以本 skill 的判据是: > **每条规则都必须被五个检查点之一抓住。** 不是每条都要进交付闸。 这个轴不是审美选择,是防膨胀装置。一份按主题堆叠的规则集会一直长——每收编一处沉淀就多几节,最后没人读得完,也没人知道新规则该放哪。所以: **加一条新规则前,先回答:它在第几阶段被想起?它的违反被哪个检查点抓住?** - **两个都答得上** → 写进那个阶段,正文里说清判据,并确认那个检查点的产物清单真的会暴露它。 - **答得出阶段、答不出检查点** → 把它加进**那个阶段的交接检查**(阶段交接不受 9 条预算限制,因为它只在那一刻问一次)。只有当它必须在**交付前**再查一遍时,才动交付闸——而交付闸是 5–9 条 killer items 的预算,加一条得说清挤掉谁。 **这条准入规则同样管存量。** 最容易漏的不是新规则——是**规则立起来那天已经在文件里的内容,没人回头用它筛一遍**("祖父豁免")。但也不能因此开一张无边界重构的许可证,所以判据是有范围的:**每次实质改动这份文件时,顺手对你本次已经打开的那一节做一次同样的核对**;不为找问题去打开本次不涉及的章节。 **写完之后必须机械核一次,别靠记性**——把新规则的关键词 grep 一遍,看它在**检查点文字**里出没出现。**0 命中 = 它没挂上任何检查点**,回到上面几条重新归位。 三条限定,缺一条这个动作就会骗你: - **范围要说死**:四个「阶段 N 交接检查」引用块 + 交付闸的**编号条目正文、产物行、以及豁免表**。豁免表要搜,但**它的命中意义是相反的**——见下一条。 - **>0 命中 ≠ 挂上,必须读那一处**。命中的可能是"这条闸在查这件事"(真挂上),也可能是"这条闸声明自己**不管**这件事"(豁免行)。**只在豁免行命中 = 反向证据**:它恰恰证明这条规则被明确排除在检查范围之外,等同 0 命中,要回去重新归位。 > 本文件里现成的例子:闸 8 的豁免行写着"纯 KPI 数字卡片",而闸 8 的正文与产物行里 **0 次**出现这个词。一条讲"KPI 卡片该怎么标"的新规则去 grep,会**只**命中那一行——把"这条闸不管 KPI 卡片"读成"已经挂上了",方向正好反过来。 - **换 2–3 个同义词再搜一遍**:实测过一次假阴性——搜"色盲"全文 0 命中,但文件一直用"**色觉障碍**"讲同一件事,只搜一个词会误判成"完全没覆盖"。 - **这个动作只对「写进阶段正文」那条出口有验证力**。直接写进交接检查的,grep **必然**命中(那个词就是你刚放进去的),**等于什么都没验证**——那条路径要反过来问:"交接检查里这句,**正文里有对应的判据吗**?"没有的话它是一句无处可查的口令。判定为**战例**的则**整个跳过这一步**:战例本来就不该出现在检查点里,0 命中是正确结果,不是失败。 > **为什么必须机械化**:这条准入规则在 2026-07 的一个月里被**同一个作者连续违反四次**——最典型的一次是他刚写完一条规则、当场忘了挂检查点,而那条规则的正上方就写着"每条规则都必须被某个检查点抓住"。**四次都是"我知道有这条规则",四次都没执行**:散文提醒对作者本人无效,他正处在"我刚想明白一件事"的兴奋里,那恰是最不会回头自查的时刻。**能救的只有一条可以跑的命令。** - **例外:正向动作不配闸。** 本 skill 有一条不是"禁止什么"而是"该做什么"的规则(阶段 1「画法没有明显答案时:批量出候选」)。这类**生成性**技术没有可判失败的违反形态——硬给它配闸只会在"画法本就明显"的常见情形上误杀。它的归位方式是**挂在最近那个检查点上做条件子句**(阶段 1 交接第 4 项之后),不单列。 - **答得出**不止**一个阶段**(两个都说得通,不是答不出)→ **多半说明它是两条规则粘在一起,拆开**,每半各归各的阶段。真实例子:"做图前先问会不会被黑白打印"能同时论证阶段 1(受众 × 介质,早问省重做)与阶段 4(技术解法与"红绿不能是唯一通道"同源)——正确处理是拆:**触发条件**进阶段 1 交接、**技术解法**并进阶段 4 既有规则。拆不开、确实是一条 → 放**更早**那个阶段(早发现便宜)。 - **哪个阶段都答不出**(一个都说不通)→ 要么不属于本 skill(介质实现层归 report-with-html / deck-creator,见边界表),要么它根本不是规则、是**战例**。 **反模式一节是纯指路表,不写判据**——只有"看到什么形态"和"去哪读"两列。同一条规则在正文和速查各说一遍,就是一处将来会分叉的复制。 > 这条规则自己就漂移过:2026-07 第一次审计数出 6 条复述、收敛了那 6 条就宣布做完;一个月后逐条比对正文原句:29 条里 7 条本就是指路、**16 条是正文复述**、另外 6 条则是**正文根本没有的规则**(全是"内容不是数字时该画成什么"那一类,因为正文当时只覆盖了数字类图表)。**教训是判据本身要可机械执行**——"这条在正文有吗"必须去 grep 正文原句,不能凭印象数。 | 参考文件 | 什么时候读 | |---|---| | `references/chart-selection-and-statistics.md` | 阶段 2–3 的完整判据与实证出处:统计量、聚合、图型、配色 | | `references/visual-form-selection.md` | 阶段 3,且**内容不是现成数字**时:定性 / 抽象 / 过程内容该画成什么形状 | | `references/graphical-perception-science.md` | 被质疑"凭什么这么画"时:Cleveland & McGill / Bertin / Tufte / Few 的出处,以及这些理论互相冲突的地方 | | `references/transaction-status-colors.md` | 阶段 3–4,交易列表难以区分扣款、退款、待处理、取消/失败时:套用颜色语义与第二通道的合成案例,并按闸 4–5 验读者是否读对 | | `references/monthly-budget-disclosure.md` | 阶段 3,累计预算的概览与月度明细并存时:用合成案例区分月度贡献与精确查数;交互验收交给 frontend-visual-qa | | `references/operational-state-matrix.md` | 阶段 2,监控、可用性或证书状态矩阵:先区分当前观察、未知与历史值,再核对多路分歧和风险是否可见 | **先读哪个**:动手画图 → 直接按下面五个阶段走;内容是定性的、不知道画成什么形状 → 阶段 3「内容不是数字时」+ `visual-form-selection.md`;被质疑"凭什么这么画" → `graphical-perception-science.md` 拿实证出处。 --- # 阶段 1 · 定意图:这张图为谁存在 **这一阶段决定图存不存在,不决定它长什么样。** 走完它你手上应该有:受众与形态、北极星指标、以及每张图一句"读者应得出 ___"。 ### 元教训:没问业务意图就开做 被客户点名的**最大方法论问题**不是画得丑,是**没问就开做**。 可视化的失败几乎从不是"画得不够漂亮",而是**判断错了**:把过程指标当主角、用警示色标正向成果、把极值当全局、给老板塞一屏交互细节、拿过期数据画图、做错了分析对象。 **动手前先问每个视图**:"要回答什么业务问题、给谁看、看完做什么决策?" **口径拿不准就让业务方专门讲,别自行假设。** > 可视化是**业务判断的表达**,不是画图技术活。 --- ### 这张图想让读者得出什么结论? > 原话:"**这个图想表达什么?想让观众得出什么结论?**" > 又一次:"**这个没有任何意义,你想给谁看?看了之后得到什么结论?**" **判据**:为每一张图写下一句话——"读者看完这张图,应该得出 ___"。**写不出来那句话,就删掉这张图**,不是换个画法。 **先分级:一个产物只有一个北极星硬指标,其余全降级。** 北极星 = 直接衡量业务成效的那个(经销商场景 = 线索,不是播放),视觉上必须最突出;过程指标刻意降级、该删就删。**每个指标上图前问"它挂得上一个决策吗(so-what → now-what)",答不出就不进**——这是"洞察驱动"与"数字罗列"的硬闸门。**删指标比加指标更难、更值钱。** > war-story:客户反复说"看数字没用""不要虚头巴脑的数字",明确要求删掉完播率、互动率——对高净值赛道它们是负信号。"高播放 ≠ 高线索":18 万播放出 10 条线索,不如 5 万播放出 18 条;让播放主导视觉会把决策者带偏去追流量而非成效。 这一问最常失守的地方: - **占了大版面却达不到效果 = 结构性错误**。原话:"**你用了一整页 PPT 的一大半部分来画出来这三条横着的柱状图,但是没有达到任何效果,这是我不能接受的结构性错误。**" **判据可量化**:一个视觉占了多少版面,就要交付相称的洞察量——占半页却只说了一句常识,是结构性错误,不是"稍微有点浪费"。 - **把作者的数据管道当洞察**:取数口径、测量覆盖、"我抓到了多少条"——那是你关心的事,受众要的是业务结论。测量完整度是**脚注口径**,永远不上主视觉。**判别问句**:把这个视觉给最终受众(老板 / 总部)看,他据此做什么决策?**答案若是关于"你数据抓全没抓全" = 管道噪音**,移进脚注。 - **把两个量并置却说不出为什么**:并置本身就是一个论断,说不出论断就别并置(见双轴那条)。 - **标题里塞了几个限定语,它就在做几件事**。原话:"**'单条播放中位数(分平台,不合并)· 附爆款极值' 看不懂,这个图你想表达什么?你混合了好几种东西。**" 一个图名需要三个括号才说得清 = 它是三张图。**修一个问题时别把修法也堆进同一张图**("分平台不合并"是上一轮的修正,塞进标题后这张图同时在讲中位数、讲分平台、讲极值)。 - **同量纲 ≠ 可同图:系列的"机制"也必须相同**。那张图把**客户端信息缺失率**(电费/屋顶——取决于客户愿不愿说,四家普遍 70%)和**销售端动作缺失率**(跟进有没有记——取决于销售做没做,0%–74% 差异极大)画进同一张 9 条系列图。两者单位都是"空缺 %"、量纲相同,但**背后机制完全不同**:读者用同一套解释读不通,于是"看不懂"。**判据:这些系列能不能用同一句话解释它为什么高或低?不能 → 拆成两张,各讲一件事。** - **装饰 / 氛围图里的图表形象(上扬趋势线、仪表盘、数字卡)同受这一问检验,不因"只是配图"而免检**。判据是**删形测试**:把这个图形从画面里删掉,损失的是氛围还是一个数据主张?损失主张,它就得答"读者应得出 ___"——认证前 / 无数据场景答不出,读者却会把它读成"我将看到的数据长这样"。反向边界同样成立:不带轴、不带数、不指向任何真实指标的抽象形状(光晕 / 网格 / 渐变)不是图表,不进本 skill 管辖——把装饰全禁和把假图表当氛围放行是同一种不动脑。判据只裁定"这是不是一个数据主张",不裁定"能不能用"——裁定成立而结论句答不出时,动作是**呈 owner 拍板,禁默删也禁默留**:owner 知情后拍板保留是合法收口,评审者先行删除同样越权(2026-08-12 登录页战例)。 ### 画法没有明显答案时:批量出候选,别纠结一版 > 原话:"**多给线索做一些可视化,大量做,不同类型、不同维度、不同数据,让我来挑。**" 这份 skill 几乎全是"删 / 砍 / 禁"方向——那是**收敛**工具。但有一种时刻需要相反的动作:**画法本身没有明显答案**(新指标、新受众、没做过的分析角度、下面那张"唯一画法"表套不进去)。此时正确的动作**不是闷头做一版然后等着被批**,而是批量产出不同类型 / 不同维度 / 不同切法的候选,一次摆出来让拥有者挑。 **这不是把活甩回去——判据在于你交出去的是什么**: - ✅ **做完再让选**:真的画出来的 N 张图摆一起,他扫一眼就知道要哪张(这是 `show, don't ask` 在发散期的形态) - ❌ **不做就问**:"你想要柱状图还是折线图?"——那是把你的活外包给他 **和收敛闸的关系**:候选阶段**不走 9 条闸**(那会把发散扼死);**挑中之后**,被选中的那张才进阶段 2–5 的完整流程。 **同族能力**:视觉风格方向的批量对比 → `design-style-picker` skill(它做的就是"批量生成不同设计方向让用户挑",而不是猜一个最终稿)。 ### 受众决定形态:高层要静态结论图,操盘手才要交互 同一份数据给不同人看是**两种产物**。先定"受众 × 使用场景"再动手。 - **老板 / 总部 / 投资人(汇报)**:一眼扫完的**静态结论图**,不要交互 / 下钻 / 堆细节。 - **操盘手 / 运营(日常)**:可 hover / 下钻 / 联动的交互工具。 - 汇报要有**一条主线**贯穿,别碎片化。 > war-story(2026-09-18):favbase 收藏工作台被误判为「操盘手的日常工具」(交互优先、说明从简),被纠正「这不是操盘手的日常工具」——它是团队共享知识库的浏览与策展界面,第一次打开的协作者也要读懂「这是什么、怎么把好东西提升进共享层」。**受众判断先查用户原话的主语**(「团队共享」「给她看」「我自己用」),不要默认「= 用户本人日常操作」;主语是「我们/团队」时,页面必须对第一次打开的人自足。 > war-story:我想把四家趋势做成可交互(勾选账号),被否——原话:"**领导只需要看到一张静态完整的图,不需要跟着我的眼睛跳,他看一下四家分布就过了这一页。**" **汇报场景里交互是负担。** 另:汇报的"成果截图"和产品的"工具 demo"是两个东西,别混。 **但静态不等于孤立**:原话"**没有关联的数据没有意义**"——一堆互不相干的总览数字对决策没用。(这句出自一个**交互产品**语境,那里的修法是「让 tab 能跳转」;**放到静态汇报上,修法不是加交互,而是让关系在同一张图里可见**。) **可检验的落法**:静态图里每个数至少与一个对照数有**显式**关系——同轴、同行、差值标注、或「vs 上周 / vs 标杆」。**产物:写得出这张图的对照清单**(哪个数对哪个数)。写不出来 = 这些数是孤立的。 --- > **做了又被砍的六件事**(转化漏斗 / 完播率 / 对标做错对象 / 全静态 / 卡片堆虚数字 / 没问意图)——它们的规则分散在下面各阶段。 > > **阶段 1 交接检查**——**动任何数据之前**,手上必须有这四样: > 1. **受众 × 形态**一句:汇报(→ 静态结论图)还是操盘(→ 交互工具)? > 2. **北极星是哪个指标**,以及它凭什么是北极星——判据是「受众做决策时直接依赖它」,不是「它的数最大」。**纯定性产物**(流程图 / 状态示意,无任何量化指标)记「不适用」,第 1、3、4 项仍必填。(这条豁免闸 1 也有;写在这里是因为**这是它第一次被需要的地方**,让人翻到四百行后才看到等于没写。) > 3. **每张计划中的图一句「读者应得出 ___」**(操作型产物用变体「读者看完应该知道下一步做 ___」;计划中的"图"**含装饰 / hero 图里被删形测试裁定为数据主张的图表形象**——它们不会被数进"图清单",恰是最常整条绕过本检查的一类,判据见上文装饰图 bullet)。**此刻还没看数据,写的是这张图要回答的决策问题**("应得出四家里谁领先"),交付时由闸 1 校准成实际结论("广州领先,是第二名的 3 倍")。**写不出那句话的图,在这里就删掉**(唯一例外:装饰图表形象答不出**不由你删**——呈 owner 拍板,见装饰图 bullet)——别带着它去验数据、去选形,那些工时全是白花的。 > 4. **对照清单**:每个要上屏的数,对照物是谁(vs 上周 / vs 标杆 / 同轴同行的另一个数)。 > > **条件子句**:若第 3 项写得出结论句、但**画法本身没有明显答案**(阶段 3 的"唯一画法"表套不进去),合法动作是**批量出候选让拥有者挑**(见上面「画法没有明显答案时」),不是硬选一个往下走。候选阶段不走闸,挑中之后才进阶段 2。 > > **为什么放在这里而不是只靠闸 1**:北极星选错会连锁决定所有图的排序与视觉权重,等交付前才发现,是全部重画;而这四样在动手前写下来只要几分钟。闸 1 在交付前再查其中前三项——那是最后一道拦截,不是第一次思考。**第 4 项对照清单只在这里查一次**:它决定的是"这些数之间有没有关系",那是画之前的事,交付前才发现数是孤立的,等于整页重来。 --- # 阶段 2 · 验数据:这个数站得住吗 **图画得再对,数错了整张都是假的。** 这一阶段的产物是:每个上屏的数,你都能说出它的统计量为什么这么选、分母干不干净、以及它支撑得起你要下的那个论断。 ### 这个数要拿去做什么决策?(决定统计量) > 原话:"**大原则:少看平均数,没有意义。**" **按用途选,不是按分布形状选**:汇报"典型值"→ median + 分位数;推算"总盘子"→ mean(且说明是用来推总量的);分布偏态 / 多峰 / 有离群点 → **让分布本身可见**,别只给一个数。 mean 与 median 差得远,本身就是偏态警报。多峰分布下两个都别单独报——它们会落在"没有人"的位置。 **偏态还有一个时间维度,很容易漏**:按周 / 按月合计的数,先看它是不是由**少数几天**贡献的。一家"本周 64 条线索"里 32 条来自两天、其余五天回落到个位数——那是单条内容爆量的**脉冲**,不是稳态能力;按周合计去判断"这家能打"会高估它的可复制性。**判据:top-2 时点占了合计的多少?过半就得在图上让这件事可见**(画到日粒度、或标一句"其中 X 天贡献 Y%")。 Anscombe / Datasaurus 证明统计量全同的数据可以长得完全不同:**报聚合数之前先看过分布图**。 **算任何率 / 占比之前,先数分母里有多少"未知"**——把"不知道"当成"否"是最常见的静默造假,它会系统性压低任何正向率。点破后我自己承认过:"**我糊弄了——用含大量「未知」的字段硬算了比例,分母没排除未知,把「不知道」当成了确定值。**" 完整判据(未知进不进分母、有阈值必须判阈值、覆盖率太低就别画分布)见 `references/chart-selection-and-statistics.md` §1d。 ### 末期是不是还没走完?(时间序列的分母是天数) 周报 / 月报最常见的静默造假:**最后一个周期还没过完,却和完整周期画在同一条线上。** 它的分母是"已过去的天数",不是一周——数字天然偏小,读者看到的"暴跌"是日历造成的,不是业务造成的。 **标个颜色和星号不够。** 真实验证:一份四宫格周报把未完成周画成浅色 + 红星号 + 脚注,一个只想拿结论的读者仍然卡住——"那湖南这个 178 到底是真跌了,还是这周没过完?**这直接决定我要不要去质问湖南,但我判断不了。**" **三选一,没有第四种做法**: 1. **不画**——末期不完整就不进图,图只画到最后一个完整周期; 2. **画在另一根线上**——不与完整周期连成同一条折线 / 同一组条形(连起来就是在邀请读者做那个不成立的比较); 3. **换成可比口径**——日均值、或"同口径进度对比"(本周前 4 天 vs 上周前 4 天)。**这个换算必须应用到本图的所有周期,不能只转换未完成的那一个**——只转末点会在同一条线内部造出两种口径,比原来的问题更隐蔽(例句里"上周前 4 天"就是这个意思,别只读了"三选一"三个字)。 **判据**:这个末期点,读者能不能不看脚注就知道"它不可比"?答不出就是没做到——脚注是给较真的人看的,不是给一眼扫过的人看的。 ### 全产物一个口径:截止日、周的定义、来源,只能有一套 同一页里出现两种"周"、三个截止日、两个数据来源,读者不会去猜哪个对,他会**对整页所有数字打折扣**。 > 真实读者原话:"**一页纸三个截止口径,我不知道信哪个。**" 另一处:"同一页纸,'一周'有两种算法,我对不上。" > 更狠的一条:"上半页说每周四家总共发 29–42 条,下半页说本周发了 78 条……**同一类数出自两个来源、差出一倍,不解释清楚,我对这页所有数字都会打折扣。**" **判据**:写下这三样,全产物只能各有一个值——**截止日**、**周期的定义**(自然周?滚动 7 天?周五到周四?)、**数据来源**。真有必须不同的(比如两个来源本就不同系统),**必须在图上显式对齐一次**:说清差异从哪来,以及**读者该怎么理解这个差异**——是其中一个更准(说明哪个),还是两个都准、差异本身就是这张图要讲的事。**不能只在两个脚注里各写各的**——那不是解释,那是把矛盾留给读者发现。 ### 这批数据能合并吗?(验聚合有效性) > 原话:"**把不同平台的播放中位数合并有什么意义?不同平台为什么要合并?**" **合并之前先证明可合并**:按主要分组变量(平台 / 渠道 / 地区 / 时期 / 口径版本)分层看一遍,**方向不一致就禁止只报聚合数**。 口径不可比的分段算出的"总中位数"不描述任何真实总体——它既不是 A 平台的典型值,也不是 B 平台的。正确做法是分列,要总盘子就报总量。 机制是 Simpson's paradox(Berkeley 录取、COVID CFR 两个经典案例),详见 §2。 --- ### 数据是地基:真实 > 漂亮 图画得再对,数据错了整张都是假的。 监控、可用性或证书矩阵先读 [运维状态矩阵案例](references/operational-state-matrix.md):用项目的观察契约判断当前证据,让未知、来源失败及多路分歧保持可见。状态判据仍由项目实现维护;本 skill 负责这份证据能支持什么结论、读者能否看出风险。 - **真数据是底线,绝不用过期快照糊弄。** 画图前先确认:这份数据是"此刻实时"还是"某天的快照"?对外的关键数字必须可溯源到权威实时源。 > war-story:我用 repo 里的旧 csv 算出一个数、业务方核定另一个数,去拉实时源 + 按口径重算,全部复现核定值,证明**不是数据打架,是我的快照过期 + 没做口径**。 - **口径常含人工判断,关键数字以人工核定为准,图上标口径。** 起算日 / 截止日 / 排除项写进脚注——同一指标口径不同会变成纠纷点。 - **KPI 置信分级**:合同强义务 / 口头对齐 / 对标阈值,三者置信度不同,别都标成"合同 KPI"。 - **PII 脱敏**:含手机号 / 身份信息的表,做给第三方看的图一律脱敏(展示"数量 + 画像",不展示联系方式)。 - **标数据可信度**:点赞 / 转发等有系统性失真(刷量),呈现要标可信度,别当真实热度。 - **脏数据先归一化再画图**:跨平台字段不统一、日期多格式、各家列数不齐——先做字段映射 + 容忍缺列 + 标完整度。**缺数据直接找业务方要,不将就脏数据。** 对外呈现还有 **5 条"违反会引爆退款"的红线**(线索分层 / 高净值别用通用互动率 / 标失真 / 单周差数据不能证伪方法论 / 不背转化率责)。 --- ### 关联要诚实:弱关联用趋势,绝不假装精确归因 数据支撑不了精确归因时,**诚实的弱关联 > 漂亮的假精确**。 > war-story:线索只记录到"平台 + 日期"、到不了具体视频。所以用**按周聚合的趋势并置**看两个峰是否同步,而不是编造"这条视频精确带来这条线索",并配注脚说明。 **砍什么、画什么——一句话分清**:**砍的是数据撑不起的结论,画的是缺失本身**。分母 30% 未知 → 把未知画成显式一段是合法的(那是事实);拿这份数据硬算「可装率」→ 砍(那个数字本身是错的)。 **降级优先于砍**:能诚实降级就降级(标成弱关联 + 注脚);连弱关联都撑不起、或数字必然是错的,才砍。 **对应铁律:数据不支持的图直接砍——画得好不能救错数据。** 转化漏斗曾被评价「画得非常好、要保留」,最终仍因**无精确归因、算出来的转化率是错的**而砍掉——**「错的数据没什么可讲的」**。呈现质量和数据可信度是两把尺子,后者不过关,前者再高也留不住。 **为什么**:假装精确会让决策者基于错误因果做决策,比"我们只能看到弱关联"危险得多。 --- > **阶段 2 交接检查**——进入选形之前,对每个会上屏的数答四件事: > 1. **统计量**:用途是什么(典型值 / 推总量)→ 据此选了 mean 还是 median?分母里未知多少条、怎么处理的? > 2. **来源与口径**:这份数是**此刻实时**还是某天的快照?关键数字以谁的核定为准?**并且:现在就把整个产物的截止日、周期定义、数据来源各定成一个值,写下来。** 这一步是**定规格**,不是核对——图还没画,没什么可核的;它的作用是让后面每张图都有一个可遵守的对象。(真有必须不同的,此刻就写清差异从哪来。) > 运维矩阵按上述案例给每个显示单元标明当前证据或未知原因;同一目标的多路分歧不能被聚合数遮掉。 > 3. **时间序列的末期完整吗**:最后一个周期走完了没有?没走完就按「不画 / 另起一根线 / 换可比口径」三选一处理——**不是标个浅色加个星号**。 > 4. **可发布性**:含 PII 吗(手机号 / 身份信息)——**脱敏是不可逆问题,过了这一关就没有第二次机会**;有系统性失真的指标(刷量)标可信度了吗? > > **闸门对应**:闸 6(聚合与归因体检)、闸 7(分母体检)。**数据来源的性质**(实时还是快照)**与 PII** 这两项只在本阶段查一次,不进交付闸——它们是上游性质的,等到交付前才发现快照过期,前面全白做。 > **与闸 3 的分工**:本阶段**定规格**(把三个值定下来、写下来),闸 3 **核对遵守**(图全画完之后,逐张比对有没有跑偏)。两处提的是同样三个名词,但动作相反——一个是"决定",一个是"审计"。**只做前者会漂**(定了没人核,画的时候照样各写各的);**只做后者太晚**(交付前才发现两种周定义,图全要重画)。 --- # 阶段 3 · 选形:该画成什么 **数确认可用之后,才轮到形状。** 顺序不能反——先挑图型再回头发现数据不支持,前面全白做。 ### 图型语义:每种图只回答一类问题 #### 堆叠 = part-to-whole,不是比较各系列 > 原话:"**不要把线索数量堆叠起来,不同经销商堆叠成一个图有什么意思?堆叠图是为了展示什么?这里一个折线图就够用了。**" **判据一句话**:读者要比较**各部分**还是看**总量构成**?比较各部分 → **折线图**(每系列独立)或 small multiples;只关心总量构成且时点少 → 才可堆叠。 **为什么**:堆叠条内部是长度判断且**没有共同基线**(Cleveland 第 3 级),并列条是位置判断(第 1 级);结构上只有**贴基线那层**起点固定可读,上面每层起点都在浮动。堆叠面积图中间层的"波动"是上下层位移的叠加**假象**。 **还有一条更隐蔽的**:**零在面积 / 长度编码里是不可见的。** 一个系列这期是 0,它就不占任何像素——**图上不会有任何东西告诉读者"这家这周挂零"**。先判这个零是否支持本图结论或读者下一步:决策相关的零往往正是最该被看见的事;没有叙事工作的零不因数据表里存在就强塞上屏。 > 真实读者原话:"'谁这周是零'这件事图上是隐形的。我事后**拿总数减**才发现:苏州 W2 是 0,湖南 W1、W3 是 0。少一块颜色我根本注意不到,可'某家一整周一条线索都没有'恰恰是**我最该知道的事**。" **这是编码方式的结构性后果,不是画图人疏忽**:任何"用面积 / 长度表示量"的图(堆叠、面积、条形、树图、气泡)都有这个盲区。若零支持结论,**修法不是换图型,是给零一个显式但不编码长度的形态**——带角色与单位的 0 值直标、网格底色、一行 ✓/✗ 徽标,让"没有"和"有一点点"在视觉上不同;若不支持结论就隐藏,不能留一个无角色的裸 `0`。 **同族判据**:凡"没有 = 没有像素"的编码,都要先问——**这个零是否支持结论或动作?** 是,就继续答"它长什么样、角色与单位是什么";否,就明确隐藏。不能既不让它承担结论,又悬一个数字让读者猜。 #### 双轴:混量纲禁止,同量异单位无害 > 原话:"**把播放中位数和当周发布量放到一张图里想说明什么?**" 拆成两种情况,别一刀切: - **混量纲**(播放中位数 vs 发布量、收入 vs 增长率、绝对值 vs 比率)→ **禁止**。两轴范围可各自任意缩放,等于作者能随意制造任何程度的相关或交叉,读者会把人为造出来的靠近读成关系。 - **同一个量的两种单位**(°C/°F、元/千元)→ 数学等价,无害。 **替代**:拆上下两图共用 x 轴 ▸ 指数化到同一轴 ▸ 散点图直面相关 ▸ 次要系列降级为标注。 #### 桑基图/流向图:节点是实体不是动作,自己对自己走同一套颜色语义 > 2026-08-07 战例:一张"四家经销商线索互转"桑基图连续四次被打回, > 根因全部是把这个图型的**结构性default**当成了理所当然,没有先问"这个图型天生容易在哪里出错"。 **判据一:节点命名必须是实体,不能是动作短语。** 左右两栏如果代表的是**同一组实体的两种角色** (发出方/接收方、出口/进口、来源/去向),右栏节点就该跟左栏用**同一个名字**,不要为了"消歧义" 造动词短语当节点名。原话:"你的接收方为什么是个动作?"—— 消歧义应该靠**结构**解决(自己对自己的量单独一条链路),不是靠改名字解决。 **判据二:自己对自己的流量,不能因为"同一实体不该流向自己"的直觉而被砍掉或合并。** 三种常见的 错误处理,从最差到最不差:①完全删除该数据、退化成图外文字标注——把一块可能占总量相当比例的 真实数据从图里抹掉了;②把"所有实体的自己对自己"硬并成一个共享终点(比如一个统一的"本地"节点)—— 这四条粗带子除了字面都叫"本地"外没有任何共同点,四个不同来源汇入同一个终点,读者天然会去找 "这四条为什么是同一件事",找不到就是"看不懂";③(正确)把"自己对自己"建模成 `src-X → dst-X` 这条链路本身,dst-X 的总量自然等于"自己对自己"+"从别处收到"——这是标准的双边(bipartite) 流向图画法(贸易流向图"中国·出口"和"中国·进口"同名同理),不是发明。 **判据三:颜色语义表(见上方"颜色即语义")同样管桑基图,且更容易在这里失守。** 桑基图的 色带通常按"占比大小"分配视觉权重,作者容易把"哪个类别面积最大"和"哪个类别该用强调色" 混为一谈——而告警色(红)在规则里是**专属**给负向/需要干预的东西,一个"面积大但其实是机会/ 待发展空间"的类别涂成红色,读者的第一反应是"这里出问题了",语义直接读反。**先判断这个类别 在论点里是正向成果、需关注的机会、还是纯背景,再套用颜色即语义表里对应的颜色**,不要按 "面积大就给强调色"的直觉走。 **判据四:镜头/交互如果要"推近看某一条边",目标是边到达的节点,不是整条边本身。** 一条 桑基链路的路径天然横跨图的整个宽度(从最左的源到最右的终点),任何"框住这条边再放大"的 镜头/裁剪逻辑算出来的包围盒都接近整张图的大小,缩放比例算出来恒等于 1("zoom 不生效")。 要做到真正的推近,目标应该是链路**到达的那个节点及其邻域**,不是链路本身的包围盒。
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기