chart-specs.md 3.6 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主色 #5B9BD5 蓝色,主要数据系列
系列2对比 #ED7D31 橙色,对比/参考系列
系列3辅助 #A5A5A5 灰色,辅助线或第三系列
正增长 #70AD47 绿色,用于涨幅标记
负增长 #C5504B 红色,用于跌幅标记
警告 #ED7D31 橙色,异常告警

通用图表样式

  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轴最小值
图表无数据 数据系列为空 跳过该图表插入
表格列宽不合理 列宽与内容不匹配 按内容自适应列宽