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で見る