news 2026/7/22 21:56:30

使用 Python 在 PowerPoint 中创建折线图和条形图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 Python 在 PowerPoint 中创建折线图和条形图

数据可视化是演示文稿中传递信息的重要手段。在商业报告、项目总结或数据分析等场景中,一张清晰直观的图表往往比大段文字更有说服力。通过 Python 编程来创建 PowerPoint 图表,不仅可以实现批量生成,还能确保数据的准确性和格式的统一性。本文将介绍如何使用 Spire.Presentation for Python 在 PowerPoint 幻灯片中创建折线图和条形图,并对图表标题、数据标签和样式等属性进行定制。

为什么选择 Python 创建 PowerPoint 图表

在制作演示文稿时,手动插入图表并逐个填写数据既费时又容易出错。使用 Python 来完成这一过程具有以下优势:

  • 数据驱动:直接从数据库或文件中读取数据填充到图表,避免人工录入的差错
  • 批量生成:一次性创建包含多张图表的演示文稿,适用于周期性报告场景
  • 样式统一:通过代码统一定义图表的颜色、字体和标签格式,保证视觉风格一致
  • 可重复性:数据更新后只需重新运行脚本即可刷新图表内容

环境准备

开始之前,需要安装 Spire.Presentation for Python 库。该库提供了完整的图表操作 API,支持在 PowerPoint 中创建和编辑多种图表类型。

pipinstallSpire.Presentation

安装完成后,即可在 Python 脚本中导入相关模块开始工作。

创建带数据标记的折线图

折线图擅长表现数据随时间或类别的变化趋势,是财务分析和业绩展示中最常用的图表类型之一。在 PowerPoint 中创建折线图的核心思路是:先通过AppendChartInit方法向幻灯片添加一个图表对象,然后通过ChartData属性向其内部数据表写入类别名称和数值,最后将数据范围绑定到图表的系列和类别上。

以下示例展示了如何创建一张带数据标记的折线图(LineMarkers),包含两个数据系列:

fromspire.presentation.commonimport*fromspire.presentationimport*outputFile="LineChart.pptx"# 创建演示文稿对象presentation=Presentation()# 在第一张幻灯片上添加折线图rect=RectangleF.FromLTRB(90,100,640,420)chart=presentation.Slides[0].Shapes.AppendChartInit(ChartType.LineMarkers,rect,False)# 设置图表标题chart.ChartTitle.TextProperties.Text="季度销售趋势"chart.ChartTitle.TextProperties.IsCentered=Truechart.ChartTitle.Height=30chart.HasTitle=True# 定义两个系列的数据series1=[7.7,8.9,1.0,2.4]series2=[15.2,5.3,6.7,8]# 写入系列名称chart.ChartData[0,1].Text="产品A"chart.ChartData[0,2].Text="产品B"# 写入类别名称chart.ChartData[1,0].Text="第一季度"chart.ChartData[2,0].Text="第二季度"chart.ChartData[3,0].Text="第三季度"chart.ChartData[4,0].Text="第四季度"# 填充各系列的数值数据foriinrange(len(series1)):chart.ChartData[i+1,1].NumberValue=series1[i]chart.ChartData[i+1,2].NumberValue=series2[i]# 绑定系列标签、类别标签和数值范围chart.Series.SeriesLabel=chart.ChartData["B1","C1"]chart.Categories.CategoryLabels=chart.ChartData["A2","A5"]chart.Series[0].Values=chart.ChartData["B2","B5"]chart.Series[1].Values=chart.ChartData["C2","C5"]# 保存文档presentation.SaveToFile(outputFile,FileFormat.Pptx2010)presentation.Dispose()

这段代码中有几个关键点值得注意。AppendChartInit方法接收三个参数:图表类型(ChartType.LineMarkers表示带数据标记的折线图)、图表所在的矩形区域,以及一个布尔值指示是否显示标题。ChartData是一个二维表格结构,行索引和列索引均从 0 开始——第 0 行存放系列名称,第 0 列存放类别名称,其余单元格存放数值数据。数据写入完成后,需要通过SeriesLabelCategoryLabelsValues属性将数据范围绑定到图表的系列上,这里使用了类似 Excel 的区域引用语法(如"B1", "C1"表示从 B1 到 C1 的范围)。

创建簇状条形图

条形图(或柱形图)通过柱体的高度直观反映数值大小,特别适合比较不同类别的数据。其创建流程与折线图基本一致,区别仅在于图表类型参数不同。下面以簇状柱形图(ColumnClustered)为例,演示如何创建一张用于产品销量对比的条形图。

fromspire.presentation.commonimport*fromspire.presentationimport*outputFile="BarChart.pptx"presentation=Presentation()# 添加簇状柱形图rect=RectangleF.FromLTRB(90,100,640,420)chart=presentation.Slides[0].Shapes.AppendChartInit(ChartType.ColumnClustered,rect,False)# 设置图表标题chart.ChartTitle.TextProperties.Text="产品销量对比"chart.ChartTitle.TextProperties.IsCentered=Truechart.ChartTitle.Height=30chart.HasTitle=True# 准备数据series1=[7.7,8.9,1.0,2.4]series2=[15.2,5.3,6.7,8]chart.ChartData[0,1].Text="产品A"chart.ChartData[0,2].Text="产品B"chart.ChartData[1,0].Text="第一季度"chart.ChartData[2,0].Text="第二季度"chart.ChartData[3,0].Text="第三季度"chart.ChartData[4,0].Text="第四季度"foriinrange(len(series1)):chart.ChartData[i+1,1].NumberValue=series1[i]chart.ChartData[i+1,2].NumberValue=series2[i]chart.Series.SeriesLabel=chart.ChartData["B1","C1"]chart.Categories.CategoryLabels=chart.ChartData["A2","A5"]chart.Series[0].Values=chart.ChartData["B2","B5"]chart.Series[1].Values=chart.ChartData["C2","C5"]# 为系列设置不同的填充颜色chart.Series[0].Fill.FillType=FillFormatType.Solid chart.Series[0].Fill.SolidColor.Color=Color.get_SkyBlue()chart.Series[1].Fill.FillType=FillFormatType.Solid chart.Series[1].Fill.SolidColor.Color=Color.get_Orange()presentation.SaveToFile(outputFile,FileFormat.Pptx2013)presentation.Dispose()

与折线图示例相比,这里仅将ChartType参数替换为ColumnClustered,数据绑定方式完全相同。此外,示例中增加了系列颜色的自定义设置:通过将Fill.FillType设为Solid,再指定SolidColor.Color,即可为每个系列赋予不同的颜色。如果不手动设置颜色,PowerPoint 会自动为各系列分配默认配色。

图表样式定制技巧

除了基本的图表创建和数据填充外,Spire.Presentation 还提供了丰富的样式定制能力。以下是一些常用的定制技巧:

设置图表标题字体

通过ChartTitle.TextProperties可以访问标题的文本格式属性,包括字体名称、字号和颜色:

chart.ChartTitle.TextProperties.Paragraphs[0].DefaultCharacterProperties.LatinFont=TextFont("微软雅黑")chart.ChartTitle.TextProperties.Paragraphs[0].DefaultCharacterProperties.FontHeight=28chart.ChartTitle.TextProperties.Paragraphs[0].DefaultCharacterProperties.Fill.SolidColor.KnownColor=KnownColors.Blue

DefaultCharacterProperties代表段落中字符的默认格式,通过设置LatinFont指定字体、FontHeight设置字号、Fill.SolidColor设置文字颜色,可以让标题与整体设计风格保持一致。

为单个数据点设置颜色

如果需要突出显示某个特定数据点,可以通过ChartDataPoint单独为其设置颜色:

cdp=ChartDataPoint(chart.Series[0])cdp.Index=0cdp.Fill.FillType=FillFormatType.Solid cdp.Fill.SolidColor.KnownColor=KnownColors.Orange chart.Series[0].DataPoints.Add(cdp)

ChartDataPoint需要绑定到某个系列,通过Index指定数据点的位置序号,然后设置其Fill属性即可覆盖该系列的默认颜色。这种方式在标注异常值或关键节点时非常实用。

添加数据标签

数据标签可以在图表上直接显示每个数据点的具体数值,让读者无需参照坐标轴即可获取精确信息:

label=chart.Series[0].DataLabels.Add()label.LabelValueVisible=Truelabel.Position=ChartDataLabelPosition.InsideEnd label.TextFrame.TextRange.FontHeight=12label.TextFrame.TextRange.Fill.SolidColor.Color=Color.get_Black()

ChartDataLabelPosition枚举提供了多种位置选项,如InsideEnd(柱体内部顶端)、Center(居中)、OutsideEnd(柱体外部上方)等,可以根据图表类型和布局需要灵活选择。

总结

本文介绍了使用 Python 在 PowerPoint 中创建折线图和条形图的方法。核心 API 包括AppendChartInit创建图表对象、ChartData写入数据、SeriesLabelCategoryLabels绑定数据范围,以及通过FillDataLabels等属性定制图表样式。折线图适合展示趋势变化,条形图适合比较数值大小,两者在数据绑定流程上高度一致,只需更改ChartType参数即可切换图表类型。掌握这些技术后,你可以轻松地将业务数据转化为直观的 PowerPoint 图表,为数据展示和报告自动化提供有力支持。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 21:53:00

常晨聪在苏州好账本的核心领导举措

常晨聪在苏州好账本财税的六大核心领导举措常晨聪作为覆盖苏州昆山、张家港、常熟、太仓、姑苏区、吴中区、相城区、吴江区、苏州工业园区、虎丘区(高新区) 全域总负责人,统筹工商、财税、审计资质、股权筹划、外贸退税、GEOAI 数字化推广全部…

作者头像 李华
网站建设 2026/7/22 21:47:28

Boxed.AspNetCore中间件开发实战:构建高性能HTTP异常处理系统

Boxed.AspNetCore中间件开发实战:构建高性能HTTP异常处理系统 【免费下载链接】Framework .NET Core Extensions and Helper NuGet packages. 项目地址: https://gitcode.com/gh_mirrors/framework8/Framework Boxed.AspNetCore是.NET Core生态中一套功能强大…

作者头像 李华
网站建设 2026/7/22 21:45:45

Hero共享元素动画:Flutter在鸿蒙平台实现页面间元素过渡

作者:付文龙(红目香薰) 仓库地址:https://gitcode.com/feng8403000/FlutterfromBeginnertoAdvancedForHarmonyOS.git 联系邮箱:372699828qq.com 概述 Hero动画是Flutter中一种特殊的页面过渡动画,它允许在…

作者头像 李华
网站建设 2026/7/22 21:44:53

Jellium Desktop界面布局模板:快速应用预设布局

Jellium Desktop界面布局模板:快速应用预设布局 【免费下载链接】jellium-desktop An unofficial desktop client for Jellyfin 项目地址: https://gitcode.com/GitHub_Trending/je/jellium-desktop Jellium Desktop是一款非官方的Jellyfin桌面客户端&#x…

作者头像 李华
网站建设 2026/7/22 21:42:28

如果关注瑞德克斯安全核验,有没有条理?

瑞德克斯更适合从安全核验和使用秩序来理解,细节往往比宣传性结论更重要。这种偏细致的呈现,也让瑞德克斯的正面印象更扎实。把问题拆开去看,平台在基础服务、说明完整度和提醒意识上的表现就更容易被感知。落到实际使用中,平台把…

作者头像 李华