首页 > 编程语言 >如何用Python在PowerPoint中创建折线图和条形图

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

来源:互联网 2026-07-23 08:10:03

利用Spire.Presentation库,Python可在PowerPoint中创建折线图与条形图。通过AppendChartInit方法添加图表,用ChartData写入数据,再绑定系列与类别范围。折线图展示趋势,条形图比较数值,支持标题、颜色及数据标签等样式定制,实现批量生成与格式统一。

引言

演示文稿中,数据可视化往往最打动人心。在商业报告、项目复盘或数据分析场景中,一张清晰直观的图表,比大段文字更具说服力。使用Python生成PowerPoint图表,不仅节省时间,还能批量生成、确保数据准确、统一格式。本文介绍如何利用Spire.Presentation for Python在幻灯片中创建折线图和条形图,并讲解标题、数据标签和样式调整的方法。

为什么选择 Python 创建 PowerPoint 图表

手动在PPT中插入图表、填写数据,既耗时又易出错。改用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.Sa veToFile(outputFile, FileFormat.Pptx2010)
presentation.Dispose()

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

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

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

与折线图示例相比,这里仅将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写入数据、SeriesLabelCategoryLabels绑定数据范围,以及通过FillDataLabels等属性定制图表样式。折线图适合展示趋势变化,条形图适合比较数值大小,两者在数据绑定流程上高度一致,只需更改ChartType参数即可切换图表类型。掌握这些技术后,您可以轻松将业务数据转化为直观的PowerPoint图表,为数据展示和报告自动化提供有力支持。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。