核心用法
chart-image 是一款基于 Vega-Lite 的纯 Node.js 图表生成工具,通过命令行调用将 JSON 数据转换为 PNG/SVG 图像。支持 10+ 种图表类型:折线图、柱状图、面积图、散点图、饼图/环形图、K线图、热力图、多系列对比、堆叠图及双轴组合图。
典型工作流:准备 JSON 数据数组 → 选择图表类型与字段映射 → 调用 chart.mjs 脚本 → 输出 PNG 文件 → 通过消息工具发送至用户频道。支持管道输入、自定义 Vega-Lite 规格、社交尺寸预设(Twitter/X、Bluesky、Instagram 等)及暗黑模式自动切换。
显著优点
部署友好性业界领先:
- 零原生编译:采用 Sharp 预编译二进制,告别
canvas的 Python/build-essential 噩梦 - 零浏览器依赖:纯 Node.js 实现,无 Puppeteer/Chrome 400MB+ 负担,冷启动 <500ms
- 离线可用:不调用 QuickChart.io 等外部 API,数据不出境
功能完整性:
- 金融级 K线图 + 成交量叠加、双轴独立缩放、时间序列智能解析、Sparkline 微图
- 20+ 格式化选项(货币、百分比、紧凑数字)、动态注解与事件标记、社交适配尺寸
- 字体/色彩/图例深度自定义,满足品牌一致性需求
潜在局限
- 格式依赖:仅输出 PNG/SVG,无交互式 HTML/JS 图表能力
- 数据规模:Vega-Lite 客户端渲染,超大数据集(10万+点)可能内存承压
- 学习曲线:字段映射、D3 时间格式、Vega 配色方案需一定可视化知识
- 无实时更新:静态图片输出,需重新生成实现"刷新"
适合人群
- DevOps/SRE:需要嵌入监控告警的轻量图表(配合
--show-change --focus-change告警样式) - 量化/金融开发者:K线+成交量、多时间轴、价格格式化开箱即用
- 社交运营:一键生成 Bluesky/Instagram 适配尺寸的传播图表
- Serverless 部署者:Fly.io、Docker、VPS 场景下追求最小镜像体积
常规风险
| 风险项 | 说明 | 缓解措施 |
|--------|------|---------|
| 输入注入 | `--data` 接收 JSON 字符串,畸形数据可能导致异常 | 严格校验输入为合法 JSON 数组 |
| 文件覆盖 | `--output` 路径若指向敏感文件可能意外覆盖 | 限定输出目录为 `/data/clawd/tmp/` 等隔离路径 |
| 资源耗尽 | 极大数据集或高并发请求可能耗尽内存 | 限制单请求数据点数量,启用流式处理 |
| 时区混淆 | 时间序列默认按以色列时间判断暗黑模式 | 明确指定 `--dark` 或校验业务时区需求 |
版本状态
当前 v2.6.22(2026-03-27),活跃维护,近期新增 --y2-ticks 双轴刻度控制。