Chart Image

零依赖服务器图表生成 · 10种专业图表 · 冷启动<500ms

data-visualization榜 #2

无浏览器依赖的纯Node.js图表生成器,支持10+种图表类型,专为Fly.io/VPS部署优化,冷启动<500ms

收藏
24.1k
安装
9.7k
版本
2.6.14
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

chart-image 是一款专为服务器环境设计的图表生成工具,基于Vega-Lite和Sharp图像处理库,可将JSON数据转换为高质量的PNG/SVG图表。核心使用方式为命令行调用:

node chart.mjs --type <图表类型> --data '[JSON数组]' --output <文件路径>

支持10种图表类型:线图(line)、柱状图(bar)、面积图(area)、散点图(point)、饼图(pie)、环形图(donut)、K线图(candlestick)、热力图(heatmap),以及多系列图、堆叠图、双轴组合图等专业形态。

显著优点

| 特性 | 说明 |
|------|------|
| **零浏览器依赖** | 纯Node.js实现,无需Puppeteer/Chrome,告别400MB+依赖包 |
| **预编译二进制** | 使用Sharp替代node-canvas,无需GCC等编译工具链 |
| **极速冷启动** | <500ms生成图表,无浏览器启动延迟 |
| **完全离线** | 零外部API调用,内网/VPN环境可用 |
| **轻量部署** | ~15MB总依赖,适合Fly.io/VPS/Docker |

高级功能

  • 智能格式化:内置percent/dollar/compact/decimal4等数值格式
  • 时间序列支持--x-type temporal正确处理日期间隔
  • 告警优化--show-change/--focus-recent/--dark专为监控场景设计
  • 社交媒体预设--output-size bluesky/portrait/twitter一键适配平台尺寸
  • 双轴叠加:价格线+成交量柱、收入柱+流失率面积等组合图表

潜在局限性

1. 静态输出:仅生成图片文件,无交互功能(hover提示、缩放、筛选)
2. 数据规模:未明确标注大数据量性能阈值,超大数据集建议预聚合

3. 样式定制:依赖Vega-Lite语法,复杂自定义需通过--spec传入完整配置

4. 实时更新:无内置数据源连接,需外部调度触发重新生成

适合人群

  • DevOps/SRE:服务器监控告警图、资源趋势可视化
  • 数据工程师:ETL管道中的自动报表生成
  • 加密货币/金融开发者:K线图、价格追踪、交易量分析
  • 社交媒体运营:定时生成数据卡片、趋势图分享
  • Serverless开发者:需要极小冷启动延迟的边缘部署场景

常规风险

| 风险类型 | 说明 | 缓解措施 |
|----------|------|----------|
| **路径注入** | `--output`参数若接用户输入可能导致任意文件写入 | 验证/白名单输出路径,使用`/data/clawd/tmp/`隔离 |
| **JSON解析** | `--data`/`--annotations`直接解析用户输入 | 需上游做JSON Schema验证,防范原型链污染 |
| **资源消耗** | 高频生成大图可能占用CPU/内存 | 设置并发限制,监控Sharp进程内存 |
| **时区歧义** | 自动`--dark`模式依赖"Israel time" | 明确文档时区行为,或强制显式指定主题 |

部署建议

# 一次性安装(Docker/Fly.io构建阶段执行)
cd /data/clawd/skills/chart-image/scripts && npm install

# 典型调用
node chart.mjs --type candlestick --data '[...]' --dark \
  --show-change --focus-recent 24 --output /data/clawd/tmp/alert.png

生成后务必通过消息工具发送图片,而非仅保存文件。

Chart Image 内容

暂无文件树

手动下载zip · 37.0 kB
contentapplication/octet-stream
请选择文件