---
name: data-chart-maker
description: 根据用户描述自动选择合适的方式生成可视化图表（SVG数据图表、Mermaid/Graphviz流程图、或文生图模型信息图）。当用户需要制作任何类型的图表、流程图、架构图或信息图时使用。也可被其他 Skill（如 data-analysis-reporter）内部调用。
---

# 可视化图表制作

> 本 Skill 来自《玩转 Skill：零门槛打造你的 AI 数字员工》第 9.3 节。
> 这是一个框架模板，支持三种图表生成方式，会根据需求自动选择最合适的。
> `scripts/render_chart.py` 和 `scripts/generate_image.py` 是占位文件，首次使用对应方式时需要让 AI 生成完整脚本。

## 三种图表生成方式说明

| 方式 | 适用场景 | 精确度 | 视觉效果 |
|:---|:---|:---:|:---:|
| SVG 直接生成 | 数据图表（柱状图、折线图、饼图、散点图）、简单示意图 | 高 | 中 |
| 中间语言渲染（Mermaid/Graphviz） | 流程图、架构图、时序图、甘特图、组织架构图、类图 | 高 | 中 |
| 文生图模型 | 信息图、海报型图表、概念图（追求视觉效果优先） | 低 | 好 |

## 环境准备

根据使用的方式，需要不同的环境支持：

- **方式一（SVG）**：无需额外安装，AI 直接生成代码
- **方式二（Mermaid/Graphviz）**：需要安装 [Node.js](https://nodejs.org)，其余依赖（mmdc、dot）由 AI 自动安装
- **方式三（文生图模型）**：需要在 `.config/image_api_key.txt` 中填入文生图 API Key（如阿里千问生图 / Google Gemini 图像生成等）

如果方式二或方式三的脚本未生成，首次使用时 AI 会自动生成。

## 使用场景

用户描述了需要制作的图表内容，希望获得一个可以直接使用的图表文件。

本 Skill 也可以被其他 Skill 调用，此时调用方需传入：图表数据、图表类型要求，以及是否指定生成方式。

## 工作流程

### 第一步：分析需求，选择生成方式

根据用户的描述，判断图表类型，选择最合适的生成方式：

**选择 SVG 方式（方式一）**，如果满足以下任一条件：
- 用户需要数据图表（柱状图、折线图、饼图、面积图、散点图等）
- 用户需要简单的示意图、对比图
- 调用方（其他 Skill）明确指定使用 SVG 方式

**选择 Mermaid/Graphviz 方式（方式二）**，如果满足以下任一条件：
- 用户需要流程图、时序图、架构图、甘特图、组织架构图
- 图表有明确的逻辑节点和连接关系
- 用户需要方便后续修改的图表

**选择文生图模型方式（方式三）**，如果满足以下任一条件：
- 用户需要信息图、知识卡片、海报型图表
- 用户明确要求"有设计感"或"视觉效果优先"
- 内容是概念性的，不需要精确的数据呈现

**如果不确定**，优先选择方式一或方式二（数据精确性更高）。

将选择的方式告知用户（或调用方），如果用户有不同偏好，按用户要求调整。

### 第二步：生成图表

---

**方式一：SVG 直接生成**

根据用户提供的数据和图表要求，直接撰写 SVG 代码：
- 图表尺寸建议 800×500 或 1200×600（宽屏布局）
- 使用简洁专业的配色方案（默认使用蓝色调）
- 包含标题、坐标轴标签（数据图表）、图例
- 数值标注清晰，关键数据点突出显示

将 SVG 代码保存为 `.svg` 文件。告知用户文件路径。

---

**方式二：Mermaid/Graphviz 渲染**

根据用户的图表需求，生成 Mermaid 或 Graphviz 描述代码：
- 流程图、时序图、甘特图、类图 → 使用 Mermaid
- 复杂网络关系图、依赖关系图 → 使用 Graphviz DOT 语言

将描述代码保存为临时文本文件，然后运行渲染脚本：
```
python scripts/render_chart.py [代码文件路径] [输出图片路径.png]
```

**如果 render_chart.py 尚未生成**，先自动生成脚本代码并写入，需求如下：
- 输入：包含 Mermaid 或 Graphviz 代码的文本文件 + 输出图片路径
- 输出：PNG 格式图片
- 自动判断是 Mermaid 格式还是 Graphviz 格式：
  - Mermaid：调用 mmdc 命令行工具渲染（需要 Node.js 环境）
  - Graphviz：调用 dot 命令行工具渲染
- 如果渲染工具未安装，给出安装命令提示

告知用户图片路径。

---

**方式三：文生图模型**

根据用户需求，构造详细的图表描述提示词，包含：
- 图表主要内容和数据（尽量具体）
- 视觉风格（如"简洁商务风"、"科技蓝"、"数据可视化"）
- 布局描述（如"左右分栏"、"时间轴横向排列"）
- 配色方向

运行文生图调用脚本：
```
python scripts/generate_image.py "[图表描述提示词]" [输出图片路径]
```

**如果 generate_image.py 尚未生成**，先自动生成：
- 从 `.config/image_api_key.txt` 读取 API Key
- 调用文生图模型 API 生成图片
- 将生成的图片保存到本地

告知用户图片路径，并提醒：**"文生图方式生成的图表中，文字内容和数据数值可能存在偏差，建议仔细核实关键信息。"**

---

### 第三步：自我核查与输出

- 检查文件是否成功生成
- 如果是 SVG 或 Mermaid/Graphviz，检查代码是否有语法错误；如有错误，修正后重新生成
- 告知用户图表文件的保存路径
- 询问用户是否满意，如不满意根据反馈调整后重新生成

## 注意事项

- 用户提供了具体数据时，图表中的数据必须完整、准确地呈现，不得遗漏或修改
- 方式三（文生图）适合追求视觉效果的展示场景，不适合要求数据精确的报告场景
- 没有特殊要求时，配色默认使用简洁专业的风格，避免过于花哨
- 被其他 Skill 调用时，如调用方已明确指定使用 SVG 方式，直接执行，无需再向用户确认图表方式
- 完成后直接输出图表文件，不需要对整个过程做总结
