# 图表配置完整参考 ## config.json 完整格式 ```json { "text_data": { "标题": "2024年度投资报告", "日期": "2024-12-05", "组合名": "稳健增长组合" }, "chart_configs": { "图表名": { "csv_path": "data.csv", "categories_col": "日期", "series_config": [...], "style": {...}, "layout": {...} } } } ``` ## series_config 系列配置 每个系列是一个字典: ```json [ {"key": "沪深300指数", "name": "沪深300指数", "type": "bar", "axis": "secondary"}, {"key": "组合收益率", "name": "组合收益率", "type": "line", "axis": "primary"} ] ``` | 字段 | 说明 | 可选值 | |------|------|--------| | `key` | CSV 中的列名 | 任意字符串 | | `name` | 图例中的显示名 | 任意字符串 | | `type` | 图表类型 | `bar`, `line`, `area` | | `axis` | 绑定轴 | `primary`(左轴), `secondary`(右轴) | ## style 样式配置 ```json { "color_scheme": "aim00", "line_width_pt": 2.0, "marker_style": "none" } ``` | 字段 | 说明 | 可选值 | |------|------|--------| | `color_scheme` | 颜色方案 | 见下方配色方案表 | | `line_width_pt` | 折线宽度(pt) | `0.5`, `0.75`, `1.0`, `1.5`, `2.0`, `2.25`, `3.0` | | `marker_style` | 标记点样式 | `none`, `circle`, `square`, `diamond`, `triangle` | | `marker_size` | 标记点大小(pt) | 数字,默认 `5` | ### 配色方案完整表 | 名称 | 色值 (hex) | 说明 | |------|-----------|------| | `aim00` | `C0C0C0` `C00000` `305496` `808080` | 对比色:浅灰柱状图 + 深红折线 | | `default` | `C00000` `0070C0` `ED7D31` `595959` `FF9999` `9DC3E6` `F4B183` `BFBFBF` | 深浅交替通用 | | `dark_only` | `C00000` `0070C0` `ED7D31` `595959` | 深色系4色 | | `light_only` | `FF9999` `9DC3E6` `F4B183` `BFBFBF` | 浅色系4色 | | `red_series` | `C00000` `FF9999` | 深红+浅红 | | `blue_series` | `0070C0` `9DC3E6` | 深蓝+浅蓝 | | `orange_series` | `ED7D31` `F4B183` | 深橙+浅橙 | | `gray_series` | `595959` `BFBFBF` | 深灰+浅灰 | 颜色按系列索引循环使用。 ## layout 布局配置 ```json { "title": "组合2024年以来收益率走势图", "legend": { "position": "top", "font_size_pt": 9, "font_name": "黑体" }, "value_axis": { "number_format": "0%", "font_size_pt": 9, "font_name": "黑体", "has_major_gridlines": false, "min_value": 0.0, "max_value": 1.0, "major_unit": 0.1 }, "secondary_value_axis": { "number_format": "#,##0", "font_size_pt": 9, "font_name": "黑体", "has_major_gridlines": false, "min_value": 2950, "max_value": 4450, "major_unit": 200 }, "date_axis": { "base_unit": "days", "major_unit": 30, "number_format": "yyyy/mm" } } ``` ### legend 图例 | 字段 | 说明 | 可选值 | |------|------|--------| | `position` | 位置 | `top`, `bottom`, `left`, `right`, `corner` | | `font_size_pt` | 字体大小 | 数字 | | `font_name` | 字体名 | `"黑体"`, `"宋体"` 等 | ### value_axis / secondary_value_axis 数值轴 | 字段 | 说明 | 示例 | |------|------|------| | `number_format` | 数字格式 | `"0%"`, `"#,##0"`, `"0.00"` | | `font_size_pt` | 字体大小 | `9` | | `font_name` | 字体名 | `"黑体"` | | `has_major_gridlines` | 主网格线 | `true`/`false` | | `min_value` | 轴最小值 | 数字(可选) | | `max_value` | 轴最大值 | 数字(可选) | | `major_unit` | 主刻度间隔 | 数字(可选) | ### date_axis 日期轴 | 字段 | 说明 | 示例 | |------|------|------| | `base_unit` | 基础单位 | `"days"`, `"months"`, `"years"` | | `major_unit` | 主刻度间隔 | 数字(标签间隔数据点数)| | `number_format` | 日期格式 | `"yyyy/mm"`, `"yyyy-mm-dd"`, `"mm-dd"` | 如果省略 `major_unit`,默认使用 `len(df) // 7`(约显示 7 个标签)。 ### 日期轴预设 可在代码中直接使用预设,无需手动配置: | 预设名 | 间隔 | 格式 | 适用数据量 | |--------|------|------|-----------| | `DAILY_TICKS` | 每天 | `mm-dd` | 1-30天 | | `WEEKLY_TICKS` | 每周 | `yyyy-mm-dd` | 1-6个月 | | `BIWEEKLY_TICKS` | 每两周 | `yyyy-mm-dd` | 季度 | | `MONTHLY_TICKS` | 每月 | `yyyy-mm` | 年度 | | `QUARTERLY_TICKS` | 每季度 | `yyyy-mm` | 多年 | | `YEARLY_TICKS` | 每年 | `yyyy` | 长期 | ### 养老金图表预设 4 个内置预设函数,传入 DataFrame 即返回完整配置: | 预设 | 函数 | 系列类型 | 所需 CSV 列 | |------|------|----------|-------------| | 当年收益率走势 | `get_chart1_config(df)` | bar(右)+line(左) | `分类`, `沪深300指数(收盘价)`, `组合收益率(左轴)` | | 成立以来收益率 | `get_chart2_config(df)` | area(右)+line(左) | `分类`, `组合规模(万元)`, `累计收益率` | | 权益仓位走势 | `get_chart3_config(df)` | area(右)+line(左) | `分类`, `沪深300指数(收盘价)`, `权益仓位(人社部口径)` | | 久期走势 | `get_chart4_config(df)` | bar(右)+line(左) | `分类`, `中债新综合总财富指数(收盘价)`, `久期` | 使用 `scripts/list_presets.py --all` 可查询所有可用预设的完整信息。 ## CSV 数据文件格式 第一列为分类列(通常是日期),后续列为数据系列: ```csv 日期,沪深300指数,组合收益率 2024-01-02,3500,0.001 2024-01-03,3520,0.005 ... ```