chart-specs.md 4.0 KB

图表规范(原生可编辑)

所有图表必须使用 python-pptx 原生 Chart 对象创建,数据写入图表内嵌 Excel 工作簿,确保用户在 PowerPoint 中可右键 → 编辑数据。

支持的图表类型

图表类型 XL_CHART_TYPE 使用场景
簇状柱形图 COLUMN_CLUSTERED 51 区域分布对比、团队追踪
簇状条形图 BAR_CLUSTERED 57 国家排名、负责人排名、状态漏斗(横向)
折线图(带标记) LINE_MARKERS 65 多日趋势、30日追踪、7日走势
环形图 DOUGHNUT -4120 状态分布、区域占比
表格 TABLE 19 明细数据、TOP列表、状态变化

配色映射

用途 色值 说明
系列1主色 #1E3A5F 深蓝,主要数据系列(对应 theme primary)
系列2对比 #ED7D31 橙色,对比/参考系列
系列3辅助 #64748B 灰蓝,辅助线或第三系列(对应 theme secondary)
正增长 #10B981 绿色,用于涨幅标记(对应 theme accent)
负增长 #EF4444 红色,用于跌幅标记(对应 theme accentNeg)
警告 #ED7D31 橙色,异常告警

注意:上表为默认配色。报告生成时 chart_factory.py 接受调用方传入的 theme_colors 参数,实际颜色由三级解析(用户主题 > 模板主题 > 默认)决定。多系列图表(如环形图/饼图)使用 DEFAULT_COLORS 色板:#1E3A5F#10B981#ED7D31#64748B#EF4444

通用图表样式

  1. 标题:图表本身不设置标题(页面顶部已有文本框标题)
  2. 图例:单系列时隐藏;多系列时放置于底部
  3. 数据标签:显示数值,字体 Arial 10pt,颜色 #333333
  4. 网格线:仅保留水平主网格线,颜色 #D9D9D9,宽度 0.75pt
  5. 坐标轴:无填充、无线条;标签字体 10pt,颜色 #666666
  6. 绘图区:无填充、无边框
  7. 图表区:无填充、无边框

图表数据绑定

from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE

chart_data = ChartData()
chart_data.categories = ['亚洲', '非洲', '拉美', '中东', '欧洲']
chart_data.add_series('数值', (2160, 1840, 1743, 878, 247))

chart = slide.shapes.add_chart(
    XL_CHART_TYPE.COLUMN_CLUSTERED,
    left, top, width, height,
    chart_data
).chart

数据自动写入 PPT 内嵌的 Excel 工作簿,用户可在 PowerPoint 中直接编辑。

特殊配置

条形图逆序(最大值在顶部)

chart = slide.shapes.add_chart(XL_CHART_TYPE.BAR_CLUSTERED, ...).chart
chart.category_axis.reverse_order = True

环形图中心空白

chart = slide.shapes.add_chart(XL_CHART_TYPE.DOUGHNUT, ...).chart
chart.plots[0].hole_size = 0.5  # 50% 中心空白

折线图标记样式

chart = slide.shapes.add_chart(XL_CHART_TYPE.LINE_MARKERS, ...).chart
series = chart.series[0]
series.marker.size = 7
series.marker.style = XL_MARKER_STYLE.CIRCLE

通用图表自动选择(新增)

通用构建器支持自动选择图表类型,根据数据特征和页面场景智能推荐。

智能推荐规则

数据特征 推荐图表 原因
时间序列 + 数值 LINE_MARKERS 展示趋势变化
1个分类列 + 数值列 BAR_CLUSTERED 横向对比排名
1个分类列(含百分比) DOUGHNUT 展示占比结构
多个数值维度 COLUMN_CLUSTERED 多维度对比
需要展示精确数值 TABLE 数据明细
发现数据分层 FUNNEL 漏斗转化
经纬度数据 散点图/气泡图 地理分布

图表质量自检

检查项 问题 修复
图表刻度异常 Y轴从非零开始导致误导 重置Y轴最小值
图表无数据 数据系列为空 跳过该图表插入
表格列宽不合理 列宽与内容不匹配 按内容自适应列宽