Spaces:
Sleeping
Sleeping
| # 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`函数以支持新的引擎 |