最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python創(chuàng)建PowerPoint各種圖表的詳細(xì)教程

 更新時(shí)間:2025年08月12日 10:28:08   作者:nuclear2011  
本文介紹了如何使用Python自動(dòng)化生成PowerPoint場(chǎng)景圖表,包含柱狀圖、條形圖、餅圖、折線圖、漏斗圖和瀑布圖等,有需要的小伙伴可以了解下

在 PowerPoint 中創(chuàng)建圖表是一種高效的數(shù)據(jù)可視化方式,能夠幫助將復(fù)雜信息更直觀地呈現(xiàn),提升表達(dá)效果。通過(guò) Python 實(shí)現(xiàn)圖表自動(dòng)化生成,不僅節(jié)省時(shí)間,還能減少手動(dòng)操作的錯(cuò)誤,提高演示文稿的專業(yè)度和制作效率。

本文將介紹如何使用 Python 創(chuàng)建多種類型的 PowerPoint 圖表,包括柱狀圖、條形圖、餅圖、折線圖、漏斗圖和瀑布圖。此外,還將展示如何使用 Excel 數(shù)據(jù)生成 PowerPoint 圖表。

為什么使用 Python 創(chuàng)建 PowerPoint 圖表

使用代碼生成 PowerPoint 圖表有以下優(yōu)勢(shì):

  • 自動(dòng)化:支持定期自動(dòng)生成圖表,減少重復(fù)手動(dòng)操作。
  • 動(dòng)態(tài)數(shù)據(jù):可基于實(shí)時(shí)或定期更新的數(shù)據(jù)源(如數(shù)據(jù)庫(kù)或 Excel)動(dòng)態(tài)生成圖表。
  • 無(wú)需圖形界面:無(wú)需安裝 Microsoft Office,也能創(chuàng)建和編輯演示文稿。
  • 批量處理:通過(guò)簡(jiǎn)單代碼一次性批量生成多個(gè)圖表或完整演示文稿。

使用工具

要在PowerPoint中生成圖表,需要使用合適的PowerPoint文檔處理庫(kù)。本文所使用的是 Spire.Presentation for Python 庫(kù)。該庫(kù)支持創(chuàng)建、編輯和轉(zhuǎn)換 PowerPoint 文件,兼容 .ppt 和 .pptx 格式,且不依賴于本地安裝的 Microsoft PowerPoint 軟件。

安裝方法

在項(xiàng)目終端中執(zhí)行以下命令,安裝 Spire.Presentation 庫(kù):

pip install spire.presentation

安裝完成后,即可在 Python 腳本中導(dǎo)入 spire.presentation,開始創(chuàng)建和操作 PowerPoint圖表。

使用 Python 在 PowerPoint 中創(chuàng)建各類圖表

Spire.Presentation 支持多種圖表類型,包括以下各種常見的類型:

  • 柱狀圖(Column Chart)
  • 條形圖(Bar Chart)
  • 餅圖(Pie Chart)
  • 環(huán)形圖(Doughnut Chart)
  • 折線圖(Line Chart)
  • 面積圖(Area Chart)
  • 散點(diǎn)圖(Scatter Chart)
  • 股票圖(Stock Chart)
  • 氣泡圖(Bubble Chart)
  • 雷達(dá)圖(Radar Chart)
  • 漏斗圖(Funnel Chart)
  • 瀑布圖(Waterfall Chart)
  • 箱線圖(Box and Whisker Chart)
  • 直方圖(Histogram Chart)
  • 帕累托圖(Pareto Chart)
  • 矩陣樹圖(TreeMap Chart)
  • 旭日?qǐng)D(SunBurst Chart)
  • 地圖圖表(Map Chart)

使用 Python 在 PowerPoint 中創(chuàng)建圖表的實(shí)現(xiàn)步驟

  • 創(chuàng)建 Presentation 對(duì)象
  • 獲取目標(biāo)幻燈片
  • 使用 AppendChart() 方法插入所需類型的圖表
  • 填充圖表數(shù)據(jù)
  • 設(shè)置圖表樣式(顏色、圖例、標(biāo)題等)
  • 保存演示文稿

柱狀圖

柱狀圖通過(guò)垂直柱形來(lái)展示各類別的數(shù)據(jù)大小,是對(duì)比不同分類或時(shí)間段數(shù)據(jù)的理想選擇。常用于展示季度銷售、年度增長(zhǎng)、產(chǎn)品對(duì)比等。

以下代碼展示了如何使用Python在PowerPoint中生成柱狀圖:

from spire.presentation import *


# 創(chuàng)建演示文稿對(duì)象
presentation = Presentation()

# 獲取第一張幻燈片
slide = presentation.Slides[0]

# 添加簇狀柱狀圖,設(shè)置圖表的位置和尺寸
chart = slide.Shapes.AppendChart(ChartType.ColumnClustered, RectangleF.FromLTRB(100, 80, 620, 440))

# 設(shè)置系列標(biāo)簽(季度)
chart.ChartData[0, 1].Text = "第一季度"
chart.ChartData[0, 2].Text = "第二季度"
chart.ChartData[0, 3].Text = "第三季度"

# 設(shè)置分類標(biāo)簽(地區(qū))
chart.ChartData[1, 0].Text = "北美"
chart.ChartData[2, 0].Text = "歐洲"
chart.ChartData[3, 0].Text = "亞洲"
chart.ChartData[4, 0].Text = "南美"

# 定義三個(gè)系列的銷售數(shù)據(jù)(每列代表一個(gè)季度,每行為不同地區(qū)的銷售額)
series_data = {
    "系列1": [20000, 22000, 18000, 30000],
    "系列2": [15000, 26000, 20000, 26000],
    "系列3": [17000, 24000, 22000, 28000]
}

# 向圖表中填充數(shù)據(jù)
for i, (key, values) in enumerate(series_data.items()):
    for j, val in enumerate(values):
        chart.ChartData[j + 1, i + 1].NumberValue = val

# 設(shè)置系列標(biāo)簽(即圖例中顯示的系列名稱,B1 至 D1 區(qū)域)
chart.Series.SeriesLabel = chart.ChartData["B1", "D1"]

# 設(shè)置分類軸標(biāo)簽(即橫軸顯示的地區(qū)名稱,A2 至 A5 區(qū)域)
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]

# 分別設(shè)置每個(gè)系列對(duì)應(yīng)的數(shù)值區(qū)域
chart.Series[0].Values = chart.ChartData["B2", "B5"]
chart.Series[1].Values = chart.ChartData["C2", "C5"]
chart.Series[2].Values = chart.ChartData["D2", "D5"]

# 設(shè)置柱狀圖中柱形之間的間距和重疊程度
chart.GapWidth = 219
# 負(fù)值表示柱子之間有間隙,不重疊        
chart.OverLap = -27         

# 設(shè)置圖例位置為底部
chart.ChartLegend.Position = ChartLegendPositionType.Bottom

# 設(shè)置圖表標(biāo)題
chart.HasTitle = True
chart.ChartTitle.TextProperties.Text = "季度銷售表現(xiàn)"
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()

條形圖

條形圖的結(jié)構(gòu)類似于柱狀圖,但數(shù)據(jù)以水平條形呈現(xiàn),更適合類目名稱較長(zhǎng)的場(chǎng)景。條形圖常用于橫向?qū)Ρ?,如各地區(qū)人口、部門預(yù)算等。

以下代碼展示了如何使用Python在PowerPoint中生成條形圖:

from spire.presentation import *

# 創(chuàng)建演示文稿對(duì)象
presentation = Presentation()

# 獲取第一張幻燈片
slide = presentation.Slides[0]

# 向幻燈片中添加一個(gè)簇狀條形圖
chart = slide.Shapes.AppendChart(ChartType.BarClustered, RectangleF.FromLTRB(100, 80, 620, 440))

# 定義類別名稱(水果名稱)和每年的數(shù)據(jù)
categories = ["蘋果", "香蕉", "櫻桃", "椰棗"]
series_data = {
    "2019年": [500, 700, 600, 400],
    "2020年": [600, 800, 700, 450]
}

# 設(shè)置圖表的類別標(biāo)簽(位于第一列)
for i, cat in enumerate(categories, start=1):
    chart.ChartData[i, 0].Text = cat

# 設(shè)置圖表的系列名稱(位于第一行)
for i, series_name in enumerate(series_data.keys(), start=1):
    chart.ChartData[0, i].Text = series_name

# 填充圖表數(shù)據(jù)區(qū)域的值
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

# 設(shè)置系列標(biāo)簽區(qū)域(B1 到 C1)
chart.Series.SeriesLabel = chart.ChartData["B1", "C1"]

# 設(shè)置類別標(biāo)簽區(qū)域(A1 到 A4)
chart.Categories.CategoryLabels = chart.ChartData["A1", "A4"]

# 設(shè)置每個(gè)系列對(duì)應(yīng)的數(shù)據(jù)區(qū)域(數(shù)值區(qū)域)
chart.Series[0].Values = chart.ChartData["B2", "B5"]
chart.Series[1].Values = chart.ChartData["C2", "C5"]

# 定義每個(gè)系列的填充顏色
fill_colors = [
    Color.FromRgb(91, 155, 213),   # 系列 1(藍(lán)色)
    Color.FromRgb(237, 125, 49),   # 系列 2(橙色)
]

# 設(shè)置系列填充樣式為純色,并應(yīng)用定義的顏色
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()

餅圖

餅圖用于表示整體中各部分的比例關(guān)系,通過(guò)扇形展示各數(shù)據(jù)項(xiàng)所占的百分比。適用于展示市場(chǎng)份額、預(yù)算分配等組成結(jié)構(gòu)。

以下代碼展示了如何使用Python在PowerPoint中生成餅圖:

from spire.presentation import * 

# 創(chuàng)建 Presentation 對(duì)象并獲取第一張幻燈片
presentation = Presentation()
slide = presentation.Slides[0]

# 向幻燈片中添加一個(gè)餅圖,指定圖表類型和位置大小
chart = slide.Shapes.AppendChart(ChartType.Pie, RectangleF.FromLTRB(150, 150, 450, 450))

# 定義圖表的分類和對(duì)應(yīng)的數(shù)值
categories = ["Chrome", "Firefox", "Edge", "Safari"]
values = [58.9, 13.3, 12.7, 9.6]

# 填充圖表數(shù)據(jù)區(qū)域:
# A1:A4 單元格用于表示分類(瀏覽器名稱)
# B1:B4 單元格用于表示對(duì)應(yīng)的市場(chǎng)份額數(shù)值
for i in range(len(categories)):
    chart.ChartData[i + 1, 0].Text = categories[i]
    chart.ChartData[i + 1, 1].NumberValue = values[i]

# 設(shè)置分類標(biāo)簽范圍為 A2:A5,數(shù)據(jù)值范圍為 B2:B5
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]
chart.Series[0].Values = chart.ChartData["B2", "B5"]

# 設(shè)置圖表標(biāo)題內(nèi)容、居中樣式和標(biāo)題高度
chart.HasTitle = True
chart.ChartTitle.TextProperties.Text = "瀏覽器市場(chǎng)份額"
chart.ChartTitle.TextProperties.IsCentered = True
chart.ChartTitle.Height = 25

# 保存為 PowerPoint 文件并釋放資源
presentation.SaveToFile("餅圖.pptx", FileFormat.Pptx2010)
presentation.Dispose()

折線圖

折線圖通過(guò)連接各數(shù)據(jù)點(diǎn)的線段,展示數(shù)據(jù)隨時(shí)間的變化趨勢(shì)。適合用于時(shí)間序列數(shù)據(jù),如年度營(yíng)收變化、網(wǎng)站流量趨勢(shì)等。

以下代碼展示了如何使用Python在PowerPoint中生成折線圖:

from spire.presentation import *

# 創(chuàng)建 Presentation 對(duì)象并獲取第一張幻燈片
presentation = Presentation()
slide = presentation.Slides[0]

# 向幻燈片中添加一個(gè)折線圖,指定圖表在幻燈片中的位置和大小
chart = slide.Shapes.AppendChart(ChartType.Line, RectangleF.FromLTRB(100, 80, 620, 440))

# 定義圖表的類別
categories = ["一月", "二月", "三月", "四月"]

# 定義兩個(gè)系列的數(shù)據(jù),表示兩個(gè)產(chǎn)品在不同月份的銷量
series_data = {
    "產(chǎn)品 A": [150, 200, 180, 220],
    "產(chǎn)品 B": [120, 140, 160, 180]
}

# 設(shè)置圖表的類別標(biāo)簽
for i, cat in enumerate(categories, start=1):
    chart.ChartData[i, 0].Text = cat

# 設(shè)置系列名稱
for i, name in enumerate(series_data.keys(), start=1):
    chart.ChartData[0, i].Text = name

# 填充系列數(shù)據(jù)
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

# 指定系列標(biāo)簽的范圍(B1 到 C1)
chart.Series.SeriesLabel = chart.ChartData["B1", "C1"]

# 指定類別標(biāo)簽的范圍(A2 到 A5)
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]

# 為每個(gè)系列分別設(shè)置數(shù)據(jù)范圍(B2:B5 和 C2:C5)
chart.Series[0].Values = chart.ChartData["B2", "B5"]
chart.Series[1].Values = chart.ChartData["C2", "C5"]

# 添加圖表標(biāo)題
chart.HasTitle = True
chart.ChartTitle.TextProperties.Text = "各產(chǎn)品月度銷售趨勢(shì)"
chart.ChartTitle.TextProperties.IsCentered = True
chart.ChartTitle.Height = 25

# 保存為 PowerPoint 文件并釋放資源
presentation.SaveToFile("折線圖.pptx", FileFormat.Pptx2010)
presentation.Dispose()

漏斗圖

漏斗圖用于表示某一流程的逐步轉(zhuǎn)化情況,例如銷售漏斗、用戶轉(zhuǎn)化路徑等。它能清晰展現(xiàn)各階段的數(shù)量遞減關(guān)系,幫助識(shí)別流程中流失嚴(yán)重的環(huán)節(jié)。

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

from spire.presentation import *

# 創(chuàng)建 Presentation 對(duì)象并獲取第一張幻燈片
presentation = Presentation()
slide = presentation.Slides[0]

# 向幻燈片添加一個(gè)漏斗圖,設(shè)置圖表在頁(yè)面中的位置和大小
chart = slide.Shapes.AppendChart(ChartType.Funnel, RectangleF.FromLTRB(100, 100, 600, 400))

# 定義漏斗各階段的名稱和對(duì)應(yīng)的數(shù)值
stages = ["潛在客戶", "銷售機(jī)會(huì)", "報(bào)價(jià)方案", "成交客戶"]
values = [1000, 600, 300, 120]

# 填充圖表數(shù)據(jù)區(qū)域
for i in range(len(stages)):
    chart.ChartData[i + 1, 0].Text = stages[i]
    chart.ChartData[i + 1, 1].NumberValue = values[i]

# 設(shè)置圖表的分類標(biāo)簽和系列值
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]
chart.Series[0].Values = chart.ChartData["B2", "B5"]

# 添加圖表標(biāo)題并設(shè)置樣式
chart.HasTitle = True
chart.ChartTitle.TextProperties.Text = "銷售漏斗階段"
chart.ChartTitle.TextProperties.IsCentered = True
chart.ChartTitle.Height = 25

# 保存演示文稿并釋放資源
presentation.SaveToFile("漏斗圖.pptx", FileFormat.Pptx2010)
presentation.Dispose()

瀑布圖

瀑布圖展示數(shù)值的累計(jì)過(guò)程,適用于拆解整體變化的構(gòu)成因素。常用于財(cái)務(wù)數(shù)據(jù)分析,如利潤(rùn)構(gòu)成、成本變化等,能直觀反映每一步對(duì)最終結(jié)果的影響。

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

from spire.presentation import *

# 創(chuàng)建 Presentation 對(duì)象并獲取第一張幻燈片
presentation = Presentation()
slide = presentation.Slides[0]

# 在幻燈片中添加瀑布圖,設(shè)置圖表在幻燈片中的位置和大小
chart = slide.Shapes.AppendChart(ChartType.WaterFall, RectangleF.FromLTRB(100, 100, 600, 400))

# 定義各階段名稱和對(duì)應(yīng)的數(shù)值
categories = ["起始", "收入", "成本", "利潤(rùn)"]
values = [0, 8000, -3000, 5000]

# 向圖表中填充數(shù)據(jù)
for i in range(len(categories)):
    chart.ChartData[i + 1, 0].Text = categories[i]
    chart.ChartData[i + 1, 1].NumberValue = values[i]

# 設(shè)置類別標(biāo)簽范圍
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]

# 設(shè)置系列對(duì)應(yīng)的數(shù)值范圍
chart.Series[0].Values = chart.ChartData["B2", "B5"]

# 設(shè)置圖表標(biāo)題
chart.HasTitle = True
chart.ChartTitle.TextProperties.Text = "利潤(rùn)構(gòu)成分析"
chart.ChartTitle.TextProperties.IsCentered = True
chart.ChartTitle.Height = 25

# 保存演示文稿并釋放資源
presentation.SaveToFile("瀑布圖.pptx", FileFormat.Pptx2010)
presentation.Dispose()

使用 Python 和 Excel 數(shù)據(jù)生成 PowerPoint 圖表

通過(guò)將 Excel 中的數(shù)據(jù)導(dǎo)入 PowerPoint 來(lái)生成圖表,可以實(shí)現(xiàn)數(shù)據(jù)與演示內(nèi)容的自動(dòng)同步更新,避免手動(dòng)復(fù)制粘貼的繁瑣和錯(cuò)誤,確保演示文稿中的信息始終反映最新的業(yè)務(wù)數(shù)據(jù)。這種方法特別適用于需要定期匯報(bào)銷售、財(cái)務(wù)、市場(chǎng)等數(shù)據(jù)的場(chǎng)景,大幅提升數(shù)據(jù)處理效率和報(bào)告的專業(yè)度。

第一步:使用 pandas 讀取 Excel 數(shù)據(jù)

pandas 是 Python 中強(qiáng)大的數(shù)據(jù)處理庫(kù),可以方便地讀取和操作 Excel 文件。首先確保安裝 pandas 庫(kù):

pip install pandas

安裝完成后,利用 pandas 將 Excel 中指定工作表的數(shù)據(jù)加載到 DataFrame 結(jié)構(gòu)中,這樣就可以方便地訪問和操作表格內(nèi)容。

import pandas as pd

# 讀取 Excel 文件中名為 'Sheet1' 的工作表
df = pd.read_excel('銷售數(shù)據(jù).xlsx', sheet_name='Sheet1')

DataFrame 是一個(gè)二維表格結(jié)構(gòu),類似于 Excel 的工作表,便于進(jìn)行后續(xù)的數(shù)據(jù)篩選、計(jì)算與傳遞。

第二步:創(chuàng)建 PowerPoint 圖表并填充 Excel 數(shù)據(jù)

借助 Spire.Presentation 庫(kù),可以在 PowerPoint 幻燈片中動(dòng)態(tài)創(chuàng)建圖表,并將剛剛讀取的 Excel 數(shù)據(jù)填充進(jìn)去,實(shí)現(xiàn)圖表的自動(dòng)生成。

from spire.presentation import *

# 創(chuàng)建演示文稿對(duì)象并獲取第一張幻燈片
presentation = Presentation()
slide = presentation.Slides[0]

# 向幻燈片中添加一個(gè)簇狀柱形圖
chart = slide.Shapes.AppendChart(ChartType.ColumnClustered, RectangleF.FromLTRB(100, 80, 620, 440))

# 設(shè)置系列名稱
quarters = df.columns[1:].tolist() 
for i, quarter in enumerate(quarters, start=1):
    chart.ChartData[0, i].Text = quarter

# 設(shè)置分類標(biāo)簽
regions = df[df.columns[0]].tolist()  
for i, region in enumerate(regions, start=1):
    chart.ChartData[i, 0].Text = region

# 填充圖表數(shù)據(jù)
for i in range(len(regions)):
    for j in range(len(quarters)):
        chart.ChartData[i + 1, j + 1].NumberValue = df.iloc[i, j + 1]

# 設(shè)置系列名稱的單元格范圍(B1 到 D1)
chart.Series.SeriesLabel = chart.ChartData["B1", "D1"]

# 設(shè)置分類標(biāo)簽的單元格范圍(A2 到 A4)
chart.Categories.CategoryLabels = chart.ChartData["A2", f"A{len(regions)+1}"]

# 設(shè)置每個(gè)系列的數(shù)值區(qū)域(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]

# 設(shè)置圖表標(biāo)題
chart.HasTitle = True
chart.ChartTitle.TextProperties.Text = "各地區(qū)季度銷售額"
chart.ChartTitle.TextProperties.IsCentered = True
chart.ChartTitle.Height = 25

# 保存演示文稿
presentation.SaveToFile("各地區(qū)季度銷售圖.pptx", FileFormat.Pptx2010)
presentation.Dispose()

總結(jié)

利用 Python 實(shí)現(xiàn) PowerPoint 圖表的自動(dòng)化生成,能夠顯著提升數(shù)據(jù)可視化的效率與一致性,幫助用戶快速制作專業(yè)且易于理解的演示內(nèi)容。本文介紹了如何在PPT中生成多種常用的圖表類型,如柱狀圖、條形圖、餅圖、折線圖、漏斗圖和瀑布圖等,并展示了如何從 Excel 讀取數(shù)據(jù)填充圖表。

除了本文例子中展示的圖表類型,你還可以嘗試很多其他圖表,如雷達(dá)圖、箱線圖等,以滿足不同的數(shù)據(jù)展示需求。

以上就是使用Python創(chuàng)建PowerPoint各種圖表的詳細(xì)教程的詳細(xì)內(nèi)容,更多關(guān)于Python創(chuàng)建PowerPoint圖表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

西畴县| 怀化市| 甘南县| 雅安市| 姚安县| 遂溪县| 高平市| 南召县| 瓮安县| 吉林市| 昌图县| 高州市| 楚雄市| 工布江达县| 祁连县| 宿州市| 曲周县| 西和县| 连城县| 元氏县| 黎川县| 临清市| 临邑县| 台南县| 瑞丽市| 长治县| 孝义市| 丰镇市| 务川| 高清| 丰顺县| 南涧| 枞阳县| 旺苍县| 绥化市| 平塘县| 庐江县| 息烽县| 玉田县| 南京市| 邵东县|