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

 更新时间:2026年07月22日 08:18:48   作者:用户033212666367  
数据可视化是演示文稿中传递信息的重要手段,通过 Python 编程来创建 PowerPoint 图表,不仅可以实现批量生成,还能确保数据的准确性和格式的统一性,本文将介绍如何使用 Spire.Presentation for Python 在 PowerPoint 幻灯片中创建折线图和条形图,需要的朋友可以参考下

引言

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

为什么选择 Python 创建 PowerPoint 图表

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

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

环境准备

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

pip install Spire.Presentation

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

创建带数据标记的折线图

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

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

from spire.presentation.common import *
from spire.presentation import *

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 = True
chart.ChartTitle.Height = 30
chart.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 = "第四季度"

# 填充各系列的数值数据
for i in range(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 列存放类别名称,其余单元格存放数值数据。数据写入完成后,需要通过 SeriesLabel、CategoryLabels 和 Values 属性将数据范围绑定到图表的系列上,这里使用了类似 Excel 的区域引用语法(如 "B1", "C1" 表示从 B1 到 C1 的范围)。

创建簇状条形图

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

from spire.presentation.common import *
from spire.presentation import *

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 = True
chart.ChartTitle.Height = 30
chart.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 = "第四季度"

for i in range(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 = 28
chart.ChartTitle.TextProperties.Paragraphs[0].DefaultCharacterProperties.Fill.SolidColor.KnownColor = KnownColors.Blue

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

为单个数据点设置颜色

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

cdp = ChartDataPoint(chart.Series[0])
cdp.Index = 0
cdp.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 = True
label.Position = ChartDataLabelPosition.InsideEnd
label.TextFrame.TextRange.FontHeight = 12
label.TextFrame.TextRange.Fill.SolidColor.Color = Color.get_Black()

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

总结

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

以上就是使用Python在PowerPoint中创建折线图和条形图的方法的详细内容,更多关于Python PowerPoint创建折线图和条形图的资料请关注脚本之家其它相关文章!

相关文章

  • Python中执行MySQL结果限制和分页查询示例详解

    Python中执行MySQL结果限制和分页查询示例详解

    这篇文章主要为大家介绍了Python中执行MySQL结果限制和分页查询示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • python使用tkinter打造三维绘图系统的示例代码

    python使用tkinter打造三维绘图系统的示例代码

    Python 的 tkinter 模块是一个常用的 GUI(图形用户界面)工具包,它能够让你创建窗口应用程序,你可以使用它来构建用户友好的界面,包括按钮、标签、文本框、列表框等各种控件,本文讲给大家介绍如何使用tkinter打造三维绘图系统,需要的朋友可以参考下
    2023-08-08
  • 使用Python批量将Word转PDF的实现技巧

    使用Python批量将Word转PDF的实现技巧

    我们在实际工作中很容易发现,有些时候我们需要将Word文档转换为PDF文档,如果只是一个文件,我们也只是需要通过Word提供的转换为PDF文档的功能就可以实现了,那么多个文档如何实现呢,所以本文给大家介绍了Python批量将Word转PDF的实现技巧,需要的朋友可以参考下
    2025-08-08
  • 远程部署工具Fabric详解(支持Python3)

    远程部署工具Fabric详解(支持Python3)

    这篇文章主要介绍了远程部署神器 Fabric,支持Python3 ,Fabric 出场了。Fabric 是一个远程部署神器,它可以在本地执行远程服务器的命令。,需要的朋友可以参考下
    2019-07-07
  • python统计指定目录内文件的代码行数

    python统计指定目录内文件的代码行数

    这篇文章主要介绍了python统计指定目录内文件的代码行数
    2019-09-09
  • pytorch 如何在GPU上训练

    pytorch 如何在GPU上训练

    这篇文章主要介绍了pytorch 如何在GPU上训练的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 使用Python中OpenCV和深度学习进行全面嵌套边缘检测

    使用Python中OpenCV和深度学习进行全面嵌套边缘检测

    这篇文章主要介绍了使用Python中OpenCV和深度学习进行全面嵌套边缘检测,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 使用Python实现音频降噪功能

    使用Python实现音频降噪功能

    在音频处理领域,背景噪声是一个常见的问题,为了提高音频的质量,我们需要对音频进行降噪处理,本文将介绍如何使用 Python 实现音频降噪,文中通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-11-11
  • Python中列表和字符串常用的数据去重方法总结

    Python中列表和字符串常用的数据去重方法总结

    关于数据去重,咱们这里简单理解下,就是删除掉重复的数据,应用的场景比如某些产品产生的大数据,有很多重复的数据,为了不影响分析结果,我们可能需要对这些数据进行去重,所以本文给大家总结了Python中列表和字符串常用的数据去重方法,需要的朋友可以参考下
    2023-11-11
  • django1.8使用表单上传文件的实现方法

    django1.8使用表单上传文件的实现方法

    Django是一个开放源代码的Web应用框架,由Python写成。这篇文章主要介绍了django1.8使用表单上传文件的相关资料,非常不错具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-11-11

最新评论