data-viz 是一个渲染技能,用 JSON 规格描述数据和文字,生成品牌化的图表和示意图,支持 PNG 和 SVG 输出。
用途: 为数据可视化提供准确、品牌一致的图表和示意图,适用于需要表达单一关键信息、比较数值、展示趋势、呈现权衡、展示矩阵、展示流程、展示分布、展示流转、展示循环或绘制流程图/架构图/层级图的场景。
主要能力:
- 支持多种图表类型:统计卡片、柱状图(可高亮、注释、系列、堆叠)、折线图、散点图、热力图、瀑布图、直方图、桑基图、循环图(2-8 阶段)、示意图(使用 D2、elk 或 dagre 布局)。
- 自动计算数值:透视、总计、步数、分箱、变化、比率、比例尺等,避免手动计算出错。
- 渲染闸门:拒绝可能误述数据的图表,例如柱状图/瀑布图/直方图的轴必须包含零、一个数值轴只能有一个单位、标记为部分与整体的份额必须合计100%、文字在交付尺寸下不小于12px、超过三个系列需要高亮。
- 示意图和循环图的契约:定义节点和边的结构,通过 expectedTopologyHash 锁定拓扑,布局后读回 SVG 验证节点和边完全匹配。
- 品牌控制:从品牌包获取颜色和字体,进行调色板审计(任何非品牌颜色都会导致失败)和字体检查(品牌字体回退会导致失败)。
- 提供命令行工具:viz.mjs 支持 --spec 渲染、--validate-only 仅验证、--list-kinds 列出类型、--list-transforms 列出变换。
使用方式:
- 在 /workspace 目录下运行 node /workspace/skills/data-viz/scripts/viz.mjs --spec projects/<slug>/chart.json 进行渲染,输出 PNG 和可选的 SVG。
- 使用 --validate-only 仅运行闸门和拓扑检查,不写文件。
- 使用 --list-kinds 和 --list-transforms 查看支持的类型和变换。
- 数据以类型化数据集输入(维度、带单位和精度的度量、时间),通过声明的变换(过滤、排序、topN、聚合、分箱、归一化、百分比变化、累积)重塑数据,不要手动修改数值。
- 规格参考见 references/spec-reference.md,示例包括柱状图注释、飞轮图、统计卡片、示意图。
- 渲染后查看 PNG 检查布局和标签可读性,博客或文档图约720px宽,需确保标签在该尺寸下可读。
- 当值来自估计时,在说明中注明。
适用场景: 需要品牌化、数据准确的图表和示意图,如报告、仪表盘、文档中的可视化,以及需要表达机制的架构图、流程图、循环图。
限制:
- 不适用于纯排版视觉(如三宫格数字、引用卡),应使用 HTML 静态图。
- 不适用于概念插画,应使用静态图或图像生成。
- 电影中的图表应使用 HyperFrames 场景嵌入此技能的 SVG。
- 需要品牌包和字体环境,缺少工具链、D2、fontconfig 或品牌包时工具无法运行(退出码2)。
- 渲染闸门可能拒绝不满足数据完整性规则的图表,需要修正规格。