接上文Python开发从零开始-50.36-Office 文档处理,本文小编与大家分享 Python 处理 Office 文档的相关知识。
(4)添加图表
1)在幻灯片中自由添加图表
① 自由添加图表涉及的相关对象
在幻灯片中自由添加图表需首先了解相关对象:
pptx.chart.data.CategoryChartData 对象:定义分类图表的数据,用于在创建新图表或更新现有图表数据时指定类别(X轴标签)和系列值(Y轴数值)。适用于具有离散标签值作为自变量(X轴)范围的图表,例如:柱状图、折线图、饼图和面积图等,不适用散点图和气泡图;
pptx.chart.data.XyChartData 对象:定义 XY 散点图的数据,支持每个数据点独立指定 X值 和 Y 值,适用于 XY 散点图;
pptx.chart.data.BubbleChartData 对象:定义气泡图的数据,支持每个数据点独立指定 X 值、 Y 值和 Size 值(气泡大小,通常映射到气泡的面积或直径),适用于气泡图;
pptx.shapes.graphfrm.GraphicFrame 对象:图表容器对象,使用SlideShapes 对象的 add_chart() 方法获取;
pptx.chart.chart.Chart 对象:图表对象,可通过它对图表进行数据结构、类型、坐标轴、图例及样式等进行调整,使用 GraphicFrame 对象的 chart 属性获取;
pptx.enum.chart.XL_CHART_TYPE 枚举:枚举值,用于指定图表类型,通常作为 add_chart() 方法的参数传入。常用枚举值包括:
COLUMN_CLUSTERED:簇状柱形图;
XY_SCATTER:散点图;
BUBBLE:气泡图。
② 添加图表步骤
在 PPT 文档中添加各类图表的通用步骤如下:
定义数据:根据添加的图表类型不同,定义不同数据对象;
添加图表:指定图表数据、图表类型、图片位置和尺寸,在幻灯片中添加图表;
获取图表对象并进行设置。
③ 添加柱状图表示例
A、定义数据
柱状图使用 CategoryChartData 对象定义数据,该对象常用属性和方法如下:
categories 属性:设置或替换图表整个类别集合(X 轴),通常分配一个可迭代对象(如列表、元组等);
add_series() 方法:用于添加一个新的系列值(Y 轴)。
CategoryChartData 对象的 add_series() 方法原型为:
add_series(name, values=(), number_format=None) |
参数解释:
name:字符串,系列名称(未指定图表标题时即为图表标题),显示在图表中;
values:可选,数值的可迭代对象(如元组、列表等),值的数量应与类别数量一致;
number_format:可选,字符串,指定该系列在 Excel 和图表中的数字格式(如 '#,##0', '0.0%' 等)。若未指定,则继承全局格式;
返回值:CategorySeriesData 对象。
B、添加图表
SlideShapes 对象的 add_chart() 方法用于在幻灯片中添加图表,该方法返回 GraphicFrame 对象。add_chart() 方法原型为:
add_chart(chart_type: XL_CHART_TYPE, x: Length, y: Length, cx: Length, cy: Length, chart_data: ChartData) |
参数解释:
chart_type:XL_CHART_TYPE 枚举值;
x / y:Length 对象,图表左边距 / 上边距;
cx / cy:Length 对象,图表宽度 / 高度;
chart_data:CategorySeriesData 对象,图表数据对象;
返回值:GraphicFrame 对象。
C、获取图表对象并进行设置
GraphicFrame 对象的 chart 属性返回 Chart 对象,该对象可对图表数据结构和样式等进行设置,其常用属性包括:
has_title 属性:布尔型,是否启用图表标题;
chart_title 属性:ChartTitle 对象,通过该对象 text_frame 属性返回的 TextFrame 对象可以控制标题文本、字体;
has_legend 属性:布尔型,是否显示图例;
legend 属性:Legend 对象,控制图例位置、字体。
D、获取图表对象并进行设置
在 PPT 文档中自由添加简单图表的完整示例如下:
from pptx import Presentationfrom pptx.chart.data import CategoryChartDatafrom pptx.enum.chart import XL_CHART_TYPEfrom pptx.util import Inches# 创建一个新 PPT 文档prs = Presentation()# 如果 PPT 文档中只有一个母版,可以直接获取该母版的版式集合layouts = prs.slide_layouts# 从版式集合中获取 Blank 版式对象layout = layouts.get_by_name('Blank')# 添加新幻灯片slide = prs.slides.add_slide(layout)# 定义图表数据chart_data = CategoryChartData()# 设置图表整个类别集合(X 轴)chart_data.categories = ['一月', '二月', '三月','四月', '五月', '六月']# 添加一个新的系列值(Y 轴)series = chart_data.add_series('2026年上半年手机销售量',(2300, 3142, 2680, 2260, 2210, 2168))# 设置图表位置与尺寸x, y, cx, cy = Inches(1.5), Inches(1.5), Inches(6), Inches(4.5)# 添加图表,并获取图表图形框架chart_gf = slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED,x, y, cx, cy,chart_data)# 获取图表对象chart = chart_gf.chart# 设置图表显示图例chart.has_legend = True# 保存 PPT 文档prs.save('example_add_chart.pptx')
代码执行后,生成 PPT 文档内容如下图所示:

受文章篇幅所限,下文将继续介绍 Python 处理 Office 文件的相关知识。