开发者

使用Python创建PowerPoint各种图表的详细教程

开发者 https://www.devze.com 2025-08-14 09:36 出处:网络 作者: nuclear2011
目录为什么使用 python 创建 PowerPoint 图表使用工具使用 Python 在 PowerPoint 中创建各类图表柱状图条形图饼图折线图漏斗图瀑布图使用 Python 和 Excel 数据生成 PowerPoint 图表总结在 PowerPoint 中创建图表是一
目录
  • 为什么使用 python 创建 PowerPoint 图表
  • 使用工具
  • 使用 Python 在 PowerPoint 中创建各类图表
    • 柱状图
    • 条形图
    • 饼图
    • 折线图
    • 漏斗图
    • 瀑布图
  • 使用 Python 和 Excel 数据生成 PowerPoint 图表
    • 总结

      在 PowerPoint 中创建图表是一种高效的数据可视化方式,能够帮助将复杂信息更直观地呈现,提升表达效果。通过 Python 实现图表自动化生成,不仅节省时间,还能减少手动操作的错误,提高演示文稿的专业度和制作效率。

      本文将介绍如何使用 Python 创建多种类型的 PowerPoint 图表,包括柱状图、条形图、饼图、折线图、漏斗图和瀑布图。此外,还将展示如何使用 Excel 数据生成 PowerPoint 图表。

      为什么使用 Python 创建 PowerPoint 图表

      使用代码生成 PowerPoint 图表有以下优势:

      • 自动化:支持定期自动生成图表,减少重复手动操作。
      • 动态数据:可基于实时或定期更新的数据源(如数据库或 Excel)动态生成图表。
      • 无需图形界面:无需安装 Microsoft Office,也能创建和编辑演示文稿。
      • 批量处理:通过简单代码一次性批量生成多个图表或完整演示文稿。

      使用工具

      要在PowerPoint中生成图表,需要使用合适的PowerPoint文档处理库。本文所使用的是 Spire.Presentation for Python 库。该库支持创建、编辑和转换 PowerPoint 文件,兼容 .ppt 和 .pptx 格式,且不依赖于本地安装的 Microsoft PowerPoint 软件。

      安装方法

      在项目终端中执行以下命令,安装 Spire.Presentation 库:

      pip install spire.presentation

      安装完成后,即可在 Python 脚本中导入 spire.presentation,开始创建和操作 PowerPoint图表。

      使用 Python 在 PowerPoint 中创建各类图表

      Spire.Presentation 支持多种图表类型,包括以下各种常见的类型:

      • 柱状图(Column Chart)
      • 条形图(Bar Chart)
      • 饼图(Pie Chart)
      • 环形图(Doughnut Chart)
      • 折线图(Line Chart)
      • 面积图(Area Chart)
      • 散点图(Scatter Chart)
      • 股票图(Stock Chart)
      • 气泡图(Bubble Chart)
      • 雷达图(Radar Chart)
      • 漏斗图(Funnel Chart)
      • 瀑布图(Waterfall Chart)
      • 箱线图(Box and Whisker Chart)
      • 直方图(Histogram Chart)
      • 帕累托图(Pareto Chart)
      • 矩阵树图(TreeMap Chart)
      • 旭日图(SunBurst Chart)
      • 地图图表(Map Chart)

      使用 Python 在 PowerPoint 中创建图表的实现步骤

      • 创建 Presentation 对象
      • 获取目标幻灯片
      • 使用 AppendChart() 方法插入所需类型的图表
      • 填充图表数据
      • 设置图表样式(颜色、图例、标题等)
      • 保存演示文稿

      柱状图

      柱状图通过垂直柱形来展示各类别的数据大小,是对比不同分类或时间段数据的理想选择。常用于展示季度销售、年度增长、产品对比等。

      以下代码展示了如何使用Python在PowerPoint中生成柱状图:

      from spire.presentation import *
      
      
      # 创建演示文稿对象
      presentation = Presentation()
      
      # 获取第一张幻灯片
      slide = presentation.Slides[0]
      
      # 添加簇状柱状图,设置图表的位置和尺寸
      chart = slide.Shapes.AppendChart(ChartType.ColumnClustered, RectangleF.FromLTRB(100, 80, 620, 440))
      
      # 设置系列标签(季度)
      chart.ChartData[0, 1].Text = "第一季度"
      chart.ChartData[0, 2].Text = "第二季度"
      chart.ChartData[0, 3].Text = "第三季度"
      
      # 设置分类标签(地区)
      chart.ChartData[1, 0].Text = "北美"
      chart.ChartData[2, 0].Text = "欧洲"
      chart.ChartData[3, 0].Text = "亚洲"
      chart.ChartData[4, 0].Text = "南美"
      
      # 定义三个系列的销售数据(每列代表一个季度,每行为不同地区的销售额)
      series_data = {
          "系列1": [20000, 22000, 18000, 30000],
          "系列2": [15000, 26000, 20000, 26000],
          "系列3": [17000, 24000, 22000, 28000]
      }
      
      # 向图表中填充数据
      for i, (key, values) in enumerate(series_data.items()):
          for j, val in enumerate(values):
              chart.ChartData[j + 1, i + 1].NumberValue = val
      
      # 设置系列标签(即图例中显示的系列名称,B1 至 D1 区域)
      chart.Series.SeriesLabel = chart.ChartData["B1", "D1"]
      
      # 设置分类轴标签(即横轴显示的地区名称,A2 至 A5 区域)
      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[2].Values = chart.ChartDatatMBRPnDnNF["D2", "D5"]
      
      # 设置柱状图中柱形之间的间距和重叠程度
      chart.GapWidth = 219
      # 负值表示柱子之间有间隙,不重叠        
      chart.OverLap = -27         
      
      # 设置图例位置为底部
      chart.ChartLegend.Position = ChartLegendPositphpionType.Bottom
      
      # 设置图表标题
      chart.HasTitle = True
      chart.ChartTitle.TextProperties.Text = "季度销售表现"
      chart.ChartTitle.TextProperties.IsCentered = True
      chart.ChartTitle.TextProperties.Paragraphs[0].DefaultCharacterProperties.IsBold = TriState.TFalse
      chart.ChartTitle.Height = 25
      
      # 保存为PPTX文件并释放资源
      presentation.SaveToFile("柱状图.pptx", FileFormat.Pptx2016)
      presentation.Dispose()

      使用Python创建PowerPoint各种图表的详细教程

      条形图

      条形图的结构类似于柱状图,但数据以水平条形呈现,更适合类目名称较长的场景。条形图常用于横向对比,如各地区人口、部门预算等。

      以下代码展示了如何使用Python在PowerPoint中生成条形图:

      from spire.presentation import *
      
      # 创建演示文稿对象
      presentation = Presentation()
      
      # 获取第一张幻灯片
      slide = presentation.Slides[0]
      
      # 向幻灯片中添加一个簇状条形图
      chart = slide.Shapes.AppendChart(ChartType.BarClustered, RectangleF.FromLTRB(100, 80, 620, 440))
      
      # 定义类别名称(水果名称)和每年的数据
      categories = ["苹果", "香蕉", "樱桃", "椰枣"]
      series_data = {
          "2019年": [500, 700, 600, 400],
          "2020年": [600, 800, 700, 450]
      }
      
      # 设置图表的类别标签(位于第一列)
      for i, cat in enumerate(categories, start=1):
          chart.ChartData[i, 0].Text = cat
      
      # 设置图表的系列名称(位于第一行)
      for i, series_name in enumerate(series_data.keys(), start=1):
          chart.ChartData[0, i].Text = series_name
      
      # 填充图表数据区域的值
      for col_idx, values in enumerate(series_data.values(), start=1):
          for row_idx, val in enumerate(values, start=1):
              chart.ChartData[row_idx, col_idx].NumberValue = val
      
      # 设置系列标签区域(B1 到 C1)
      chart.Series.SeriesLabel = chart.ChartData["B1", "C1"]
      
      # 设置类别标签区域(A1 到 A4)
      chart.Categories.CategoryLabels = chart.ChartData["A1", "A4"]
      
      # 设置每个系列对应的数据区域(数值区域)
      chart.Series[0].Values = chart.ChartData["B2", "B5"]
      chart.Series[1].Values = chart.ChartData["C2", "C5"]
      
      # 定义每个系列的填充颜色
      fill_colors = [
          Color.FromRgb(91, 155, 213),   # 系列 1(蓝色)
          Color.FromRgb(237, 125, 49),   # 系列 2(橙色)
      ]
      
      # 设置系列填充样式为纯色,并应用定义的颜色
      for index, color in enumerate(fill_colors):
          chart.Series[index].Fill.FillType = FillFormatType.Solid
          chart.Series[index].Fill.SolidColor.Color = color
      
      # 保存演示文稿到文件
      presentation.SaveToFile("条形图.pptx", FileFormat.Pptx2010)
      presentation.Dispose()

      使用Python创建PowerPoint各种图表的详细教程

      饼图

      饼图用于表示整体中各部分的比例关系,通过扇形展示各数据项所占的百分比。适用于展示市场份额、预算分配等组成结构。

      以下代码展示了如何使用Python在PowerPoint中生成饼图:

      from spire.presentation import * 
      
      # 创建 Presentation 对象并获取第一张幻灯片
      presentation = Presentation()
      slide = presentation.Slides[0]
      
      # 向幻灯片中添加一个饼图,指定图表类型和位置大小
      chart = slide.Shapes.AppendChart(ChartType.Pie, RectangleF.FromLTRB(150, 150, 450, 450))
      
      # 定义图表的分类和对应的数值
      categories = ["Chrome", "Firefox", "Edge", "Safari"]
      values = [58.9, 13.3, 12.7, 9.6]
      
      # 填充图表数据区域:
      # A1:A4 单元格用于表示分类(浏览器名称)
      # B1:B4 单元格用于表示对应的市场份额数值
      for i in range(len(categories)):
          chart.ChartData[i + 1, 0].Text = categories[i]
          chart.ChartData[i + 1, 1].NumberValue = values[i]
      
      # 设置分类标签范围为 A2:A5,数据值范围为 B2:B5
      chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]
      chart.Series[0].Values = chart.ChartData["B2", "B5"]
      
      # 设置图表标题内容、居中样式和标题高度
      chart.HasTitle = True
      chart.ChartTitle.TextProperties.Text = "浏览器市场份额"
      chart.ChartTitle.TextProperties.IsCentered = True
      chart.ChartTitle.Height = 25
      
      # 保存为 PowerPoint 文件并释放资源
      presentation.SaveToFile("饼图.pptx", FileFormat.Pptx2010)
      presentation.Dispose()

      使用Python创建PowerPoint各种图表的详细教程

      折线图

      折线图通过连接各数据点的线段,展示数据随时间的变化趋势。适合用于时间序列数据,如年度营收变化、网站流量趋势等。

      以下代码展示了如何使用Python在PowerPoint中生成折线图:

      from spire.presentation import *
      
      # 创建 Presentation 对象并获取第一张幻灯片
      presentation = Presentation()
      slide = presentation.Slides[0]
      
      # 向幻灯片中添加一个折线图,指定图表在幻灯片中的位置和大小
      chart = slide.Shapes.AppendChart(ChartType.Line, RectangleF.FromLTRB(100, 80, 620, 440))
      
      # 定义图表的类别
      categories = ["一月", "二月", "三月", "四月"]
      
      # 定义两个系列的数据,表示两个产品在不同月份的销量
      series_data = {
          "产品 A": [150, 200, 180, 220],
          "产品 B": [120, 140, 160, 180]
      }
      
      # 设置图表的类别标签
      for i, cat in enumerate(categories, start=1):
          chart.ChartData[i, 0].Text = cat
      
      # 设置系列名称
      for i, name in enumerate(series_data.keys(), start=1):
          chart.ChartData[0, i].Text = name
      
      # 填充系列数据
      for col_idx, values in enumerate(series_data.values(), start=1):
          for row_idx, val in enumerate(values, start=1):
              chart.ChartData[row_idx, col_idx].NumberValue = val
      
      # 指定系列标签的范围(B1 到 C1)
      chart.Series.SeriesLabel = chart.ChartData["B1", "C1"]
      
      # 指定类别标签的范围(A2 到 A5)
      chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]
      
      # 为每个系列分别设置数据范围(B2:B5 和 C2:C5)
      chart.Series[0].Values = chart.ChaandroidrtData["B2", "B5"]
      chart.Series[1].Values = chart.ChartData["C2", "C5"]
      
      # 添加图表标题
      chart.HasTitle = True
      chart.ChartTitle.TextProperties.Text = "各产品月度销售趋势"
      chart.ChartTitle.TextProperties.IsCentered = True
      chart.ChartTitle.Height = 25
      
      # 保存为 PowerPoint 文件并释放资源
      presentation.SaveToFile("折线图.pptx", FileFormat.Pptx2010)
      presentation.Dispose()

      使用Python创建PowerPoint各种图表的详细教程

      漏斗图

      漏斗图用于表示某一流程的逐步转化情况,例如销售漏斗、用户转化路径等。它能清晰展现各阶段的数量递减关系,帮助识别流程中流失严重的环节。

      以下代码展示了如何使用Python在PowerPoint中生成漏斗图:

      from spire.presentation import *
      
      # 创建 Presentation 对象并获取第一张幻灯片
      presentation = Presentation()
      slide = presentation.Slides[0]
      
      # 向幻灯片添加一个漏斗图,设置图表在页面中的位置和大小
      chart = slide.Shapes.AppendChart(ChartType.Funnel, RectangleF.FromLTRB(100, 100, 600, 400))
      
      # 定义漏斗各阶段的名称和对应的数值
      stages = ["潜在客户", "销售机会", "报价方案", "成交客户"]
      values = [1000, 600, 300, 120]
      
      # 填充图表数据区域
      for i in range(len(stages)):
          chart.ChartData[i + 1, 0].Text = stages[i]
          chart.ChartData[i + 1, 1].NumberValue = values[i]
      
      # 设置图表的分类标签和系列值
      chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]
      chart.Series[0].Values = chart.ChartData["B2", "B5"]
      
      # 添加图表标题并设置样式
      chart.HasTitle = True
      chart.ChartTitle.TextProperties.Text = "销售漏斗阶段"
      chart.ChartTitle.TextProperties.IsCentered = True
      chart.ChajsrtTitle.Height = 25
      
      # 保存演示文稿并释放资源
      presentation.SaveToFile("漏斗图.pptx", FileFormat.Pptx2010)
      presentation.Dispose()

      瀑布图

      瀑布图展示数值的累计过程,适用于拆解整体变化的构成因素。常用于财务数据分析,如利润构成、成本变化等,能直观反映每一步对最终结果的影响。

      以下代码展示了如何使用Python在PowerPoint中生成瀑布图:

      from spire.presentation import *
      
      # 创建 Presentation 对象并获取第一张幻灯片
      presentation = Presentation()
      slide = presentation.Slides[0]
      
      # 在幻灯片中添加瀑布图,设置图表在幻灯片中的位置和大小
      chart = slide.Shapes.AppendChart(ChartType.WaterFall, RectangleF.FromLTRB(100, 100, 600, 400))
      
      # 定义各阶段名称和对应的数值
      categories = ["起始", "收入", "成本", "利润"]
      values = [0, 8000, -3000, 5000]
      
      # 向图表中填充数据
      for i in range(len(categories)):
          chart.ChartData[i + 1, 0].Text = categories[i]
          chart.ChartData[i + 1, 1].NumberValue = values[i]
      
      # 设置类别标签范围
      chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]
      
      # 设置系列对应的数值范围
      chart.Series[0].Values = chart.ChartData["B2", "B5"]
      
      # 设置图表标题
      chart.HasTitle = True
      chart.ChartTitle.TextProperties.Text = "利润构成分析"
      chart.ChartTitle.TextProperties.IsCentered = True
      chart.ChartTitle.Height = 25
      
      # 保存演示文稿并释放资源
      presentation.SaveToFile("瀑布图.pptx", FileFormat.Pptx2010)
      presentation.Dispose()

      使用 Python 和 Excel 数据生成 PowerPoint 图表

      通过将 Excel 中的数据导入 PowerPoint 来生成图表,可以实现数据与演示内容的自动同步更新,避免手动复制粘贴的繁琐和错误,确保演示文稿中的信息始终反映最新的业务数据。这种方法特别适用于需要定期汇报销售、财务、市场等数据的场景,大幅提升数据处理效率和报告的专业度。

      第一步:使用 pandas 读取 Excel 数据

      pandas 是 Python 中强大的数据处理库,可以方便地读取和操作 Excel 文件。首先确保安装 pandas 库:

      pip install pandas

      安装完成后,利用 pandas 将 Excel 中指定工作表的数据加载到 DataFrame 结构中,这样就可以方便地访问和操作表格内容。

      import pandas as pd
      
      # 读取 Excel 文件中名为 'Sheet1' 的工作表
      df = pd.read_excel('销售数据.xlsx', sheet_name='Sheet1')

      DataFrame 是一个二维表格结构,类似于 Excel 的工作表,便于进行后续的数据筛选、计算与传递。

      第二步:创建 PowerPoint 图表并填充 Excel 数据

      借助 Spire.Presentation 库,可以在 PowerPoint 幻灯片中动态创建图表,并将刚刚读取的 Excel 数据填充进去,实现图表的自动生成。

      from spire.presentation import *
      
      # 创建演示文稿对象并获取第一张幻灯片
      presentation = Presentation()
      slide = presentation.Slides[0]
      
      # 向幻灯片中添加一个簇状柱形图
      chart = slide.Shapes.AppendChart(ChartType.ColumnClustered, RectangleF.FromLTRB(100, 80, 620, 440))
      
      # 设置系列名称
      quarters = df.columns[1:].tolist() 
      for i, quarter in enumerate(quarters, start=1):
          chart.ChartData[0, i].Text = quarter
      
      # 设置分类标签
      regions = df[df.columns[0]].tolist()  
      for i, region in enumerate(regions, start=1):
          chart.ChartData[i, 0].Text = region
      
      # 填充图表数据
      for i in range(len(regions)):
          for j in range(len(quarters)):
              chart.ChartData[i + 1, j + 1].NumberValue = df.iloc[i, j + 1]
      
      # 设置系列名称的单元格范围(B1 到 D1)
      chart.Series.SeriesLabel = chart.ChartData["B1", "D1"]
      
      # 设置分类标签的单元格范围(A2 到 A4)
      chart.Categories.CategoryLabels = chart.ChartData["A2", f"A{len(regions)+1}"]
      
      # 设置每个系列的数值区域(B2编程客栈:B4、C2:C4、D2:D4)
      for i in range(len(quarters)):
          col_letter = chr(66 + i)  # B、C、D...
          start_cell = f"{col_letter}2"
          end_cell = f"{col_letter}{len(regions)+1}"
          chart.Series[i].Values = chart.ChartData[start_cell, end_cell]
      
      # 设置图表标题
      chart.HasTitle = True
      chart.ChartTitle.TextProperties.Text = "各地区季度销售额"
      chart.ChartTitle.TextProperties.IsCentered = True
      chart.ChartTitle.Height = 25
      
      # 保存演示文稿
      presentation.SaveToFile("各地区季度销售图.pptx", FileFormat.Pptx2010)
      presentation.Dispose()
      

      使用Python创建PowerPoint各种图表的详细教程

      总结

      利用 Python 实现 PowerPoint 图表的自动化生成,能够显著提升数据可视化的效率与一致性,帮助用户快速制作专业且易于理解的演示内容。本文介绍了如何在PPT中生成多种常用的图表类型,如柱状图、条形图、饼图、折线图、漏斗图和瀑布图等,并展示了如何从 Excel 读取数据填充图表。

      除了本文例子中展示的图表类型,你还可以尝试很多其他图表,如雷达图、箱线图等,以满足不同的数据展示需求。

      以上就是使用Python创建PowerPoint各种图表的详细教程的详细内容,更多关于Python创建PowerPoint图表的资料请关注编程客栈(www.devze.com)其它相关文章!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号