File size: 2,685 Bytes
ab808d5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# ECharts SVG Rendering Framework

该项目是一个灵活的图表渲染框架,可以将ECharts和D3.js生成的图表转换为SVG格式,支持多种图表类型和渲染方式。

## 功能特点

- 支持多种渲染引擎:
  - ECharts JavaScript API
  - Python生成的ECharts配置
  - D3.js图表
- 提供统一的SVG输出格式
- 支持递归扫描的模板系统,可以轻松添加新的图表类型
- 本地托管JavaScript库,减少外部依赖
- 高度可配置的渲染选项
- 完善的错误处理和日志记录

## 项目结构

```
framework/
├── make_svg.py             # 主程序入口点
├── template/               # 图表模板目录
│   ├── d3-js/              # D3.js模板
│   ├── echarts-js/         # ECharts JavaScript模板
│   ├── echarts_py/         # Python生成的ECharts模板
│   └── template_registry.py # 模板注册和管理
├── utils/                  # 工具函数
│   ├── file_utils.py       # 文件操作函数
│   ├── html_to_svg.py      # HTML到SVG的转换
│   └── load_charts.py      # 图表加载和渲染
├── scripts/                # 辅助脚本
├── static/                 # 静态资源
│   └── lib/                # 本地JavaScript库
└── data/                   # 示例数据
```

## 使用方法

### 基本用法

1. 准备JSON格式的输入数据
2. 运行主程序生成SVG图表:

```bash
python modules/chart_engine/chart_engine.py --input test/input.json --name donut_chart_01 --output tmp.svg
python modules/chart_engine/chart_engine.py --input test/testset/data/55.json --name donut_chart_01 --output tmp.svg
```

参数说明:
- `--input`: 输入JSON文件路径
- `--name`: 图表类型名称
- `--output`: 输出SVG文件路径
- `--html`: 输出HTML文件路径(可选),用于调试和修改图表代码

### HTML调试模式

使用`--html`参数可以同时导出HTML格式的图表:

```bash
python modules/chart_engine/chart_engine.py --input test/input.json --name donut_chart_01 --html debug.html
```

HTML模式的优势:
- 便于在浏览器中调试图表代码
- 可以直接修改和测试图表样式和行为
- 在开发新模板或解决复杂渲染问题时特别有用

### 添加新模板

如需了解如何创建新的图表模板,请参考文档 `docs/how_to_write_a_template.md`

## 依赖项

- Python 3.8+
- Node.js和npm(用于HTML到SVG的转换)
- Puppeteer(用于使用浏览器渲染SVG)

## 开发指南


### 添加新的渲染引擎

1.`utils/load_charts.py`中添加新的加载函数
2. 更新`render_chart_to_svg`函数以支持新的引擎