数据可视化
图表是文章里的插图,不是仪表盘上的控件。 四条规则全部从既有约束推导,而非新发明。
四条规则
R1 · 用墨色编码,不用色相
序列靠墨色阶梯(heading → primary → secondary → functional → border-strong) 加线型(实线 / 虚线 / 点线)区分。这直接来自"禁止高饱和装饰色"和 "颜色不作为唯一信息载体"——线型让图表在灰度打印和色盲条件下都成立。
R2 · 用强调色标记论点,不标记类别
全图只有一个序列 / 柱 / 点可以是 accent —— caption 正在讲的那一个。 在阅读轨内容页,它消耗两处 accent 预算中的一处;应用轨按页面契约分配强调, 但图表本身仍不把 accent 降格为普通分类色。
R3 · 直接标注,不用图例
在序列右端直接写名字,而不是让读者在图例和曲线之间来回对照。 这是"文字即界面"在数据上的应用。
R4 · 装饰做减法
无网格线(只留一根基线)、无坐标框、 无刻度线(标签即刻度)、无背景填充。
适用的图形类型(不是预制组件)
折线(≤4 序列)· 面积(单序列)· 柱 · 排行条 · 点 / 棒棒糖 · 斜率 · 迷你图 · 小倍数 · 分布带 · 占比堆叠(≤3 段)· 表内条 · 时间线
当前交付的是图表样式、静态 SVG 输出约定与三份主题配置;不附带数据、图表运行时或成品图库。 本页不拿虚构数据伪造图例。实际项目应从真实数据、来源与 caption 开始,再选择下方对应的消费方式。
新增禁令
| 禁止 | 原因 |
|---|---|
| 饼图 / 环形图 | 角度比较是人眼最差的编码方式 |
| 雷达图 · 仪表盘 · 3D | 面积失真,且属于装饰性图形 |
| 词云 · 树图 · 气泡 | 面积编码不精确 |
| 双 Y 轴 | 两个刻度可以任意缩放出任意相关性 |
| 渐变填充 · 阴影 · 圆角柱帽 | 已被既有禁令覆盖 |
多数已被现有禁令隐含——这一节主要是把既有禁令应用到新媒介。
一个诚实的代价
墨色阶梯只有四到五档可辨,超过就区分不开。这套系统的选择是 声明"文心不做多序列密集图表",把它归入本就在适用范围外的仪表盘, 而不是引入分类色板破坏 D9。把限制说出来,比假装没有限制诚实。
静态 SVG 输出约定
当内容流程或图表工具输出静态 SVG 时,有一条关键约定:
vector-effect: non-scaling-stroke;
这是 1.5px 描边在海报尺度下仍然是 1.5px 的关键—— 没有它,放大十倍的图里线条会粗到破坏整个系统的气质。
三种消费方式
- 静态 SVG 输出 ——
kit/charts/的样式 + SVG 约定 - Mermaid 主题 —— 由 token 生成,导入已有 Mermaid 项目,取代手写转换表
- ECharts / Vega 主题 JSON —— 给已有项目导入的生成物;本包不引入运行时依赖
kit/tokens/generated/mermaid-wenxin.json
kit/tokens/generated/echarts-wenxin.json
kit/tokens/generated/vega-wenxin.json
它们都由 npm run build:themes 从 core.css 生成——
改一个 token,三个主题同时更新,不会漂移。