Chart Image

📊 零浏览器依赖的专业图表生成器

零依赖图表生成器,无需浏览器/Puppeteer,15MB轻量部署,专为Fly.io/VPS设计,500ms内生成专业PNG图表。

收藏
45.2k
安装
9.7k
版本
2.6.23
CLS 安全性认证2026-05-16
点击查看完整报告 >

使用说明

核心用法

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 双轴刻度控制。

安全解读

核心用法

chart-image 是一款专为无头服务器环境设计的图表生成工具,通过 Vega-Lite 规范生成 PNG/SVG 图表,无需浏览器或原生编译依赖。主要特性包括:

  • 纯 Node.js 实现:基于 Sharp 预编译二进制,替代 Canvas 原生依赖
  • 极速冷启动:无浏览器启动延迟,图表生成 <500ms
  • 全场景覆盖:支持折线、柱状、面积、饼图/环形、K线、热力图、多系列、堆叠、双轴叠加等 10+ 图表类型
  • 智能输出:内置社交媒体尺寸预设(Twitter/Discord/Bluesky/Instagram 等)、深色模式自动切换

典型调用示例

node chart.mjs --type line --data '[{"x":"10:00","y":25}]' --output chart.png

显著优点

1. 部署友好:~15MB 依赖 vs Puppeteer 方案 400MB+,Docker 镜像大幅瘦身
2. 离线可用:零外部 API 调用,敏感数据不出境

3. 高度可定制:支持字体主题、颜色方案、坐标轴格式、水平参考线、时间序列标注等高级功能

4. 监控场景优化:内置 --show-change--focus-recent--sparkline 等告警可视化选项

潜在局限性

  • 高级定制需 Vega-Lite 知识:复杂图表需通过 --spec 传入自定义 JSON
  • 输入格式敏感:数据需严格 JSON 数组格式,字段名需与参数匹配
  • 无交互性:仅生成静态图片,不支持前端交互(如 tooltip、zoom)
  • 字体依赖系统:自定义字体需宿主机预装

适合人群

  • DevOps/SRE:需要轻量级监控图表嵌入告警通知
  • 数据工程师:批量生成报告图表、定时任务可视化
  • 社交运营:快速产出数据驱动的内容图片
  • 隐私敏感场景:金融、医疗等禁止数据外流的行业

常规风险

  • 输入注入风险--data 参数直接 JSON.parse,极端场景可能解析恶意构造数据(仅影响本地进程)
  • 路径遍历--output 未做严格路径校验,建议配合容器化部署限制写入范围
  • 依赖更新:Sharp/Vega 版本迭代需关注兼容性,建议锁定版本并定期审计

---

认证结论:T2 可信来源,静态/动态/依赖审计全维度通过,无网络外联、无危险函数调用,适合生产环境部署。

Chart Image 内容

scripts文件夹
手动下载zip · 38.5 kB
chart.mjstext/javascript
请选择文件