关于 chart
用于创建交互式 Apache ECharts 页面及可复现图表文件的项目式制图技能,适合需要复用模板、保存数据与脚本并导出 PNG 的分析和开发工作。
主要功能
- 01使用可复用模板构建图表
- 02创建自定义图表布局
- 03每个图表单独存入项目文件夹
- 04保存源数据和生成脚本
- 05将图表导出为 PNG
适用场景
- 01可视化时间序列趋势和价格数据
- 02比较类别或展示构成比例
- 03构建多图 KPI 仪表盘
- 04保存可复现的图表页面和图片
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ starchild-ai-agent/ official-skills --skill chart安装后在 Claude Code 中输入/chart确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/base-export.jsbase-styles.cssbuild_chart.pychart_server.pytemplates/bar.htmlcandlestick.htmldashboard.htmldual-axis.htmlheatmap.htmlline.htmlmulti-panel.htmlpie.htmlradar.htmlscatter.htmlwaterfall.html详细介绍
图表 — 基于项目的交互式制图
使用 Apache ECharts 生成交互式图表页面。每张图表都放在 output/chart-html/ 下专属的项目文件夹中,方便重复使用和迭代。
适用场景
用户需要可视化图表时均可使用:价格图表、对比图表、仪表板、业务分析等。
架构
- 使用 ECharts(CDN)进行渲染
- 使用 ECharts 原生导出(
getDataURL)+ canvas 合并,可靠地导出 PNG - 基于项目存储:每个图表项目对应一个文件夹
- 无图库模式:所有产物都保留在项目文件夹中
项目结构(必需)
每个图表项目都应遵循以下结构:
output/chart-html/
<project-name>/
index.html # chart page
generate.py # generation script (for reproducibility)
README.md # title / description / data source notes
data.json # data snapshot
screenshot.png # saved image
文件夹名称示例:btc-90d-20260401
工作流
步骤 1:选择模板或自定义布局
可用模板:
| 模板 | 适用场景 |
|---|---|
line.html | 时间序列趋势、多系列对比 |
bar.html | 类别对比、排名 |
pie.html | 构成 / 占比细分 |
candlestick.html | OHLCV 价格图表 |
scatter.html | 相关性、分布 |
dashboard.html | KPI 卡片 + 2×2 多图表网格 |
radar.html | 多维度评分 |
heatmap.html | 矩阵 / 日历强度 |
dual-axis.html | 两个数值范围差异很大的系列(例如市值与稳定币供应量)——左右 Y 轴各自带有标签颜色 |
multi-panel.html | 共用一个 X 轴的堆叠面板(例如价格 + 成交量 + RSI)——使用单个 ECharts 实例,所有面板间同步提示框 / 缩放 |
waterfall.html | 增量贡献细分(例如盈亏归因、预算差异)——正负柱形堆叠在浮动基线上 |
步骤 2:创建项目文件夹
使用 scripts/build_chart.py 中的 create_project(name, description, data_sources)。
步骤 3:构建并保存图表页面
使用以下任一方法:
build_chart(template_name, ...)build_chart_custom(...)
然后将其保存为项目文件夹中的 index.html:
save_chart(html, project_dir=project_dir)
步骤 4:保存可复现的资源
另需保存:
save_generate_script(script_content, project_dir)→generate.pysave_data(data, project_dir)→data.jsoncreate_project(...)会创建项目 README
步骤 5:提供预览
建议使用项目根目录提供服务:
preview_serve(
title="Chart Preview",
dir="skills/chart/scripts",
command="python3 chart_server.py /data/workspace/output/chart-html 7860",
port=7860
)
然后打开:/preview/<id>/<project-name>/index.html
v3.0.1 中的重要行为:
chart_server.py现在会在查找文件系统之前,在内部重写带有预览前缀的静态路径(/preview/<id>/...→/...)。- 这可确保预览 iframe 加载实际项目的
index.html,而不是回退到根目录列表。 - 项目页面应放在
output/chart-html/<project>/index.html下(不要在没有chart_server.py的情况下直接将output/chart-html作为静态预览提供服务)。
步骤 6:导出图像
两种模式:
- 用户需要网页 + 图像:点击页面工具栏中的“💾 保存图像”,将其保存到当前项目为
screenshot.png - 用户只需要图像:调用
screenshot_chart(project_dir)(Playwright),并直接发送screenshot.png
工具栏要求
每个图表页面都必须包含以下按钮:
<div class="actions">
<button onclick="downloadPNG(this)">📥 Download PNG</button>
<button onclick="copyToClipboard(this)">📋 Copy Image</button>
<button onclick="saveToProject(this)">💾 Save Image</button>
</div>
不要包含图库入口。
关键文件
| 文件 | 用途 |
|---|---|
skills/chart/scripts/base-styles.css | 基础深色主题 CSS |
skills/chart/scripts/base-export.js | 导出辅助工具:下载 / 复制 / 保存到项目 |
skills/chart/scripts/build_chart.py | 项目创建、HTML 构建、数据 / 脚本保存、截图 |
skills/chart/scripts/chart_server.py | 静态服务 + /save-chart API |
skills/chart/templates/*.html | 可复用图表模板 |
output/chart-html/<project>/* | 所有生成的图表产物 |
注意事项
- 将数据直接嵌入 HTML(
const DATA = ...),避免 iframe CORS 问题。 - 对于多图表页面,将所有图表实例注册到
window.CHART_INSTANCES。 - 使用有意义的项目名称(
topic-range-date),方便查找。
评论
支持 Markdown