图表规范(原生可编辑)
所有图表必须使用 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 |
橙色,异常告警 |
通用图表样式
- 标题:图表本身不设置标题(页面顶部已有文本框标题)
- 图例:单系列时隐藏;多系列时放置于底部
- 数据标签:显示数值,字体 Arial 10pt,颜色
#333333
- 网格线:仅保留水平主网格线,颜色
#D9D9D9,宽度 0.75pt
- 坐标轴:无填充、无线条;标签字体 10pt,颜色
#666666
- 绘图区:无填充、无边框
- 图表区:无填充、无边框
图表数据绑定
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轴最小值 |
| 图表无数据 |
数据系列为空 |
跳过该图表插入 |
| 表格列宽不合理 |
列宽与内容不匹配 |
按内容自适应列宽 |