Claude-skill-registry chart-generation
生成专业金融图表(K线图、技术指标图)。适用于数据可视化、技术分析展示、报告生成等场景。支持多种图表类型(basic、comprehensive)和自定义样式(深色、浅色主题)。
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/chart-generation" ~/.claude/skills/majiayu000-claude-skill-registry-chart-generation && rm -rf "$T"
manifest:
skills/data/chart-generation/SKILL.mdtags
source content
Chart Generation Skill
专业的金融图表生成工具,基于 mplfinance 库。
Overview
本 Skill 提供以下核心功能:
- 基础K线图 - 经典的蜡烛图(Candlestick Chart)
- 综合技术图 - K线图 + 技术指标(MA、MACD、成交量)
- 主题定制 - 深色/浅色主题,专业美观
所有图表支持保存为 PNG 文件或在 Jupyter Notebook 中直接显示。
Quick Start
1. 准备数据
图表生成需要 OHLCV 数据(开盘、最高、最低、收盘、成交量)。 通常先调用
financial-data-fetch Skill 获取数据。
如需技术指标图表,还需调用
technical-indicators Skill 计算指标。
2. 选择图表类型
- 基础K线图 →
(仅蜡烛图 + 成交量)generate_candlestick_chart - 综合技术图 →
(K线 + MA + MACD + 成交量)generate_comprehensive_chart
3. 调用工具
# 示例:生成综合技术图 result = generate_comprehensive_chart( data=stock_data, # 包含 OHLCV 和技术指标的 DataFrame symbol="000001", # 股票代码 title="平安银行技术分析", # 图表标题 theme="dark", # 主题(dark/light) save_path="chart.png" # 保存路径(可选) )
Chart Types
1. Basic Candlestick Chart
Tool:
generate_candlestick_chart
Purpose: 生成经典的蜡烛图,适用于:
- 快速查看价格走势
- 技术形态识别(如十字星、锤子线)
- 简洁报告展示
Parameters:
(DataFrame, required): 包含 OHLCV 数据data- 必需列:日期(索引)、开盘、收盘、最高、最低、成交量
(str, optional): 股票代码(用于标题)symbol
(str, optional): 自定义标题title
(str, optional): 主题("dark" or "light",默认"dark")theme
(str, optional): 保存路径(如 "output/chart.png")save_path
Returns: Dict with:
(bool): 是否成功success
(str): 结果描述message
(str): 保存路径(如果指定)saved_path
Example:
result = generate_candlestick_chart( data=stock_data, symbol="000001", theme="dark", save_path="candlestick.png" ) # 生成纯净的K线图 + 成交量副图
2. Comprehensive Chart
Tool:
generate_comprehensive_chart
Purpose: 生成综合技术分析图表,适用于:
- 专业技术分析
- 多指标联合判断
- 详细报告生成
Chart Layout:
┌─────────────────────────────┐ │ 主图: K线 + MA(5/10/20/60) │ ← 蜡烛图 + 移动平均线 ├─────────────────────────────┤ │ 副图1: MACD │ ← DIF/DEA/BAR柱状图 ├─────────────────────────────┤ │ 副图2: 成交量 │ ← 柱状图(红绿分色) └─────────────────────────────┘
Parameters:
(DataFrame, required): 包含 OHLCV + 技术指标数据data- 必需列:日期、开盘、收盘、最高、最低、成交量
- 可选列:MA_5, MA_10, MA_20, MA_60(移动平均线)
- 可选列:MACD_DIF, MACD_DEA, MACD_BAR(MACD指标)
(str, optional): 股票代码symbol
(str, optional): 自定义标题title
(str, optional): 主题("dark" or "light")theme
(str, optional): 保存路径save_path
Returns: 同 Basic Chart
Example:
# 先获取数据和计算指标 stock_data = fetch_stock_data(symbol="000001", days=60) stock_data = calculate_all_indicators(stock_data) # 生成综合图表 result = generate_comprehensive_chart( data=stock_data, symbol="000001", title="平安银行 - 60日技术分析", theme="dark", save_path="comprehensive.png" )
Themes
Dark Theme (默认)
适用于:
- 现代化界面
- 夜间查看
- 专业演示
特点:
- 黑色背景
- 高对比度
- 护眼配色
Light Theme
适用于:
- 打印输出
- 传统报告
- 明亮环境
特点:
- 白色背景
- 清晰线条
- 经典配色
自定义主题
主题配置文件位于
assets/chart_styles/:
- 深色主题配置dark_theme.json
- 浅色主题配置light_theme.json
可以编辑 JSON 文件自定义:
- 背景色、网格色
- 蜡烛颜色(涨/跌)
- 成交量颜色
- MA 线条颜色和样式
Data Requirements
Minimum Required Columns
| 列名 | 类型 | 说明 |
|---|---|---|
| 日期 | datetime | 必需,作为索引或列 |
| 开盘 | float | 必需 |
| 收盘 | float | 必需 |
| 最高 | float | 必需 |
| 最低 | float | 必需 |
| 成交量 | int/float | 必需 |
Optional Columns (for Comprehensive Chart)
| 列名 | 类型 | 说明 |
|---|---|---|
| MA_5, MA_10, MA_20, MA_60 | float | 移动平均线 |
| MACD_DIF, MACD_DEA | float | MACD快慢线 |
| MACD_BAR | float | MACD柱状图 |
Error Handling
1. 数据验证失败
错误:缺少必需列 ['开盘', '收盘', '最高', '最低']
解决: 确保数据包含所有必需的 OHLCV 列
2. 数据为空
错误:数据为空,无法生成图表
解决: 检查数据获取是否成功
3. 保存失败
错误:无法保存图表到 /invalid/path/chart.png
解决: 检查保存路径是否有效且有写入权限
4. 技术指标列缺失
警告:未找到 MA 指标列,将跳过均线绘制
说明: 不影响基础K线图生成,但综合图表会缺少对应指标
Performance Notes
- 生成时间: 通常 < 2秒(60条数据)
- 图片大小: 约 100-200 KB(PNG格式)
- 分辨率: 默认 1200x800 像素(高清)
- 内存使用: < 50 MB
Decision Tree
用户需求 ├─ 仅查看价格走势? │ └─ 是 → generate_candlestick_chart │ ├─ 需要技术指标分析? │ └─ 是 → generate_comprehensive_chart │ └─ 选择主题 ├─ 现代化/夜间 → theme="dark" └─ 打印/传统 → theme="light"
Best Practices
1. 数据量建议
# 推荐数据量 - 日K线: 30-120 条(1-6个月) - 周K线: 50-200 条(1-4年) # 避免过多数据 data = stock_data.tail(120) # 只取最近120条
2. 标题规范
# 清晰的标题格式 title = f"{stock_name}({symbol}) - {days}日K线" # 示例: "平安银行(000001) - 60日K线"
3. 保存路径管理
# 使用相对路径,按日期组织 from datetime import datetime date_str = datetime.now().strftime("%Y%m%d") save_path = f"outputs/{symbol}_{date_str}.png"
4. 错误处理
result = generate_comprehensive_chart(...) if not result['success']: print(f"图表生成失败: {result['error']}") else: print(f"图表已保存: {result['saved_path']}")
References
详细文档和配置说明见:
Script Implementation
图表生成逻辑实现在:
- Skill 主类(复用 core/visualization.py)skill.py
复用项目中的
core/visualization.py 模块,确保代码一致性。