通用图表生成器
把任意一份业务表格,变成一张能看、能交互、能导图的漂亮图表。本技能专为「运营 / 财务 / 电商 / 销售 / 汇报」等通用场景设计,不绑定某个行业模板,数据给你、类型你定、出图即用。
所有图表库(ECharts)已内联进生成文件,断网也能打开,双击浏览器即可查看,右上角「保存图片」导出 PNG。
一、支持的图表类型(8 类)
| 类型值 | 中文 | 适合的数据 | 典型用途 |
|--------|------|-----------|----------|
| line | 折线图 | 时间/类别 + ≥2 数值列 | 多指标趋势对比(营收 vs 利润) |
| area | 面积图 | 同上 | 趋势 + 体量感(累计增长) |
| bar | 柱状图 | 类别 + 1 数值列 | 大小对比(各渠道销量) |
| hbar | 横向柱状图 | 类别名很长时 | 省份/长名称排名 |
| stacked_bar | 堆叠柱状图 | 类别 + ≥2 数值列 | 总量构成(各品类按月堆叠) |
| pie | 饼图 | 名称 + 1 数值列 | 占比(品类销售份额) |
| doughnut | 环形图 | 名称 + 1 数值列 | 占比 + 中间留白放结论 |
| scatter | 散点图 | 2 数值列 | 相关性/分布(单价 vs 销量) |
选型的「单一事实源」见 references/图表类型指南.md,命令参数与该文件严格一致。
二、适用业务场景
- 运营周报/月报:多指标趋势(折线/面积)——曝光、点击、转化逐周走线。
- 财务汇报:占比(饼图/环形)——成本结构、收入来源构成。
- 电商数据:对比(柱状/堆叠)——各 SKU、各平台销量对比。
- 销售漏斗:排名(横向柱)——各环节转化人数/金额。
- 趋势分析:相关性(散点)——投放金额与 ROI 的关系。
- 任何「表格想一眼看懂」的需求:把数字变成图,汇报、发群、贴文档都好用。
三、输入数据格式与字段约定
支持三种输入,详见 references/数据格式.md:
- CSV(推荐,最稳):第一行表头,后续数据行;中文列名直接用。
- JSON:两种形态——对象数组
[{ "月份":"1月","营收":100 }, ...];或{ "categories":[...], "series":{ "营收":[...] } }。 - xlsx:可选,需
pip install openpyxl,读第一个工作表。
字段约定(建议,非强制):
- 类别/时间列放第一列,数值列随后。
- 列名用中文最直观(如「月份」「营收」「渠道」)。
- 数值里的千分位逗号、百分号会自动清洗,无需预处理。
最小可用示例(CSV):
月份,营收,利润
1月,120,30
2月,150,42
3月,180,55
四、使用方法
标准流程
- 用户上传或给出表格文件路径。
- 和用户确认:图表类型、X 轴列(类别/时间)、Y 轴数值列(可多个)。
- 运行
scripts/chart_generator.py生成 HTML。 - 把输出 HTML 路径告诉用户,提示双击打开 / 保存图片。
命令模板
# 基础:类别 + 单数值 → 柱状图
python {skill_base}/scripts/chart_generator.py 数据.csv --x 月份 --y 营收 --title "月度营收" --out 营收图.html
# 多系列趋势:时间 + 多数值 → 折线
python {skill_base}/scripts/chart_generator.py 数据.csv --x 月份 --y 营收,利润 --type line --title "营收与利润趋势" --out 趋势图.html
# 占比:名称 + 数值 → 环形
python {skill_base}/scripts/chart_generator.py 数据.csv --x 渠道 --y 销售额 --type doughnut --title "渠道占比" --out 占比图.html
# 自动选型(按数据形态猜类型,省去 --type)
python {skill_base}/scripts/chart_generator.py 数据.csv --auto --out 自动图.html
# 查看支持的类型
python {skill_base}/scripts/chart_generator.py --list-types
{skill_base}是本技能在运行环境中的根目录,AI 执行前需替换为实际路径(如~/.workbuddy/skills/universal-charts)。
参数说明
| 参数 | 必填 | 说明 |
|------|------|------|
| input | 是 | 输入文件:CSV / JSON(xlsx 需 openpyxl) |
| --x | 否 | 类别/时间/X 轴列名;省略时自动取第一非数值列 |
| --y | 否 | 数值/Y 轴列名,多个用逗号分隔;省略时自动取全部数值列 |
| --type | 否 | 图表类型,见第一节 8 类;省略且不用 --auto 时按 auto 选型 |
| --title | 否 | 图表标题,默认「数据图表」 |
| --out | 否 | 输出 HTML 路径,默认 chart.html |
| --auto | 否 | 按数据形态自动选型(≥2 数值列→折线,否则柱状) |
| --list-types | 否 | 仅列出支持的图表类型后退出 |
五、自动选型逻辑
不指定 --type 时:
- 数值列 ≥ 2 →
line(多指标看趋势) - 数值列 = 1 且有类别列 →
bar(看大小对比) - 饼图/散点需显式指定
--type(占比/相关性意图明确)
六、配色方案
出图配色遵循 references/配色方案.md:默认商务蓝橙板,提供明快板、财务板、禁用色清单。用户说「换个颜色」「要喜庆一点」「财务风格」时按该文件切换,不凭空配色。
七、场景模板
常见汇报场景的「现成命令 + 配色 + 标题」速查见 references/场景模板.md(运营周报折线、销售占比环形、电商对比柱、趋势面积、渠道排名横柱等)。用户给的数据贴近某模板时,直接套用并稍作调整,不必每次重新设计。
八、数值清洗规则(脚本自动处理)
- 千分位逗号
1,200→1200、百分号50%→50自动去除。 - 空值、
-、—、NaN、空字符串 → 视为缺失,该点不画。 - CSV 编码按
utf-8-sig → gbk → utf-8顺序回退,中文一般无需指定。 - 非数值内容(如「暂无」「—」)不会报错,按缺失处理。
九、异常处理
| 现象 | 处理 |
|------|------|
| 输入文件不存在 | 核对 --input 路径,建议用绝对路径 |
| 列不存在:xxx | 先不加 --x/--y 跑一次,看输出的 columns 真实列名,照抄 |
| 不支持的类型 | 用 --list-types 看支持列表,检查拼写 |
| xlsx 读不了 | pip install openpyxl,或先转 CSV |
| 数据为空 | 检查文件是否有数据行、表头是否正确 |
| 生成失败 | 最多重试 2 次;仍失败把错误原样告诉用户,不编造图表 |
十、进度反馈
- 读取数据:「正在读取表格数据…」
- 生成图表:「正在生成 ECharts 图表…」
- 完成:「图表已生成,路径:xxx.html,双击即可查看,右上角可保存图片」
十一、输出说明
- 每个输出是一个独立
.html文件,ECharts 库已内联其中,断网也能打开。 - 浏览器打开后:右上角工具栏「保存图片」可导出 PNG(建议 2x 屏或放大后保存更清晰)。
- 标题、坐标轴、图例均为中文友好,直接用于汇报/文档/群发。
- 需要多张图(如一份周报含趋势+占比):分别生成多个 HTML,或一次性多次调用。
十二、安全与隐私
- 全部在本地完成:只读你给的表格,只解析数值,只写出 HTML。
- 不向任何外部地址上传数据,不调用网络请求,不执行数据里的任何代码。
- ECharts 库以本地
assets/echarts.min.js形式打包进技能,生成时不发任何网络请求。
十三、不适用场景
- 实时数据库直连作图:本技能吃静态文件,不支持直连数据库(可先把查询结果导出 CSV 再喂)。
- 超大规模数据(十万行以上):浏览器渲染会卡,建议先聚合再作图。
- 地图/地理坐标图:当前 8 类不含地图,需另接地理包。
- 需要复杂交互仪表盘(下钻/联动筛选):当前为单图输出,多图请多次生成。
十四、出图前自检(质量检查清单)
生成前对照 references/质量检查清单.md 快速过一遍:标题是否点题、类别轴是否可读、数值列是否选对、配色是否贴合场景、缺失值是否预期。确保交出去的图「一眼看懂、不会误导」。
常见误解
- 「CSV 要整理成标准格式」——不用,脚本自动清洗逗号/百分号/编码,脏数据也能画。
- 「必须装 ECharts」——不用,库已内联在输出 HTML 里。
- 「只能画我列的类型」——8 类覆盖绝大多数业务图,特殊图(地图/桑基)暂不在内。
Scan to join WeChat group