使用Python創(chuàng)建PowerPoint各種圖表的詳細教程
在 PowerPoint 中創(chuàng)建圖表是一種高效的數據可視化方式,能夠幫助將復雜信息更直觀地呈現(xiàn),提升表達效果。通過 Python 實現(xiàn)圖表自動化生成,不僅節(jié)省時間,還能減少手動操作的錯誤,提高演示文稿的專業(yè)度和制作效率。
本文將介紹如何使用 Python 創(chuàng)建多種類型的 PowerPoint 圖表,包括柱狀圖、條形圖、餅圖、折線圖、漏斗圖和瀑布圖。此外,還將展示如何使用 Excel 數據生成 PowerPoint 圖表。
為什么使用 Python 創(chuàng)建 PowerPoint 圖表
使用代碼生成 PowerPoint 圖表有以下優(yōu)勢:
- 自動化:支持定期自動生成圖表,減少重復手動操作。
- 動態(tài)數據:可基于實時或定期更新的數據源(如數據庫或 Excel)動態(tài)生成圖表。
- 無需圖形界面:無需安裝 Microsoft Office,也能創(chuàng)建和編輯演示文稿。
- 批量處理:通過簡單代碼一次性批量生成多個圖表或完整演示文稿。
使用工具
要在PowerPoint中生成圖表,需要使用合適的PowerPoint文檔處理庫。本文所使用的是 Spire.Presentation for Python 庫。該庫支持創(chuàng)建、編輯和轉換 PowerPoint 文件,兼容 .ppt 和 .pptx 格式,且不依賴于本地安裝的 Microsoft PowerPoint 軟件。
安裝方法
在項目終端中執(zhí)行以下命令,安裝 Spire.Presentation 庫:
pip install spire.presentation
安裝完成后,即可在 Python 腳本中導入 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)
- 散點圖(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 中創(chuàng)建圖表的實現(xiàn)步驟
- 創(chuàng)建 Presentation 對象
- 獲取目標幻燈片
- 使用 AppendChart() 方法插入所需類型的圖表
- 填充圖表數據
- 設置圖表樣式(顏色、圖例、標題等)
- 保存演示文稿
柱狀圖
柱狀圖通過垂直柱形來展示各類別的數據大小,是對比不同分類或時間段數據的理想選擇。常用于展示季度銷售、年度增長、產品對比等。
以下代碼展示了如何使用Python在PowerPoint中生成柱狀圖:
from spire.presentation import *
# 創(chuàng)建演示文稿對象
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 = "第三季度"
# 設置分類標簽(地區(qū))
chart.ChartData[1, 0].Text = "北美"
chart.ChartData[2, 0].Text = "歐洲"
chart.ChartData[3, 0].Text = "亞洲"
chart.ChartData[4, 0].Text = "南美"
# 定義三個系列的銷售數據(每列代表一個季度,每行為不同地區(qū)的銷售額)
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 區(qū)域)
chart.Series.SeriesLabel = chart.ChartData["B1", "D1"]
# 設置分類軸標簽(即橫軸顯示的地區(qū)名稱,A2 至 A5 區(qū)域)
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]
# 分別設置每個系列對應的數值區(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"]
# 設置柱狀圖中柱形之間的間距和重疊程度
chart.GapWidth = 219
# 負值表示柱子之間有間隙,不重疊
chart.OverLap = -27
# 設置圖例位置為底部
chart.ChartLegend.Position = ChartLegendPositionType.Bottom
# 設置圖表標題
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()
條形圖
條形圖的結構類似于柱狀圖,但數據以水平條形呈現(xiàn),更適合類目名稱較長的場景。條形圖常用于橫向對比,如各地區(qū)人口、部門預算等。
以下代碼展示了如何使用Python在PowerPoint中生成條形圖:
from spire.presentation import *
# 創(chuàng)建演示文稿對象
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
# 填充圖表數據區(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
# 設置系列標簽區(qū)域(B1 到 C1)
chart.Series.SeriesLabel = chart.ChartData["B1", "C1"]
# 設置類別標簽區(qū)域(A1 到 A4)
chart.Categories.CategoryLabels = chart.ChartData["A1", "A4"]
# 設置每個系列對應的數據區(qū)域(數值區(qū)域)
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中生成餅圖:
from spire.presentation import *
# 創(chuàng)建 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]
# 填充圖表數據區(qū)域:
# 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中生成折線圖:
from spire.presentation import *
# 創(chuàng)建 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.ChartData["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()
漏斗圖
漏斗圖用于表示某一流程的逐步轉化情況,例如銷售漏斗、用戶轉化路徑等。它能清晰展現(xiàn)各階段的數量遞減關系,幫助識別流程中流失嚴重的環(huán)節(jié)。
以下代碼展示了如何使用Python在PowerPoint中生成漏斗圖:
from spire.presentation import *
# 創(chuàng)建 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]
# 填充圖表數據區(qū)域
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.ChartTitle.Height = 25
# 保存演示文稿并釋放資源
presentation.SaveToFile("漏斗圖.pptx", FileFormat.Pptx2010)
presentation.Dispose()瀑布圖
瀑布圖展示數值的累計過程,適用于拆解整體變化的構成因素。常用于財務數據分析,如利潤構成、成本變化等,能直觀反映每一步對最終結果的影響。
以下代碼展示了如何使用Python在PowerPoint中生成瀑布圖:
from spire.presentation import *
# 創(chuàng)建 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 來生成圖表,可以實現(xiàn)數據與演示內容的自動同步更新,避免手動復制粘貼的繁瑣和錯誤,確保演示文稿中的信息始終反映最新的業(yè)務數據。這種方法特別適用于需要定期匯報銷售、財務、市場等數據的場景,大幅提升數據處理效率和報告的專業(yè)度。
第一步:使用 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 的工作表,便于進行后續(xù)的數據篩選、計算與傳遞。
第二步:創(chuàng)建 PowerPoint 圖表并填充 Excel 數據
借助 Spire.Presentation 庫,可以在 PowerPoint 幻燈片中動態(tài)創(chuàng)建圖表,并將剛剛讀取的 Excel 數據填充進去,實現(xiàn)圖表的自動生成。
from spire.presentation import *
# 創(chuàng)建演示文稿對象并獲取第一張幻燈片
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}"]
# 設置每個系列的數值區(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]
# 設置圖表標題
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()

總結
利用 Python 實現(xiàn) PowerPoint 圖表的自動化生成,能夠顯著提升數據可視化的效率與一致性,幫助用戶快速制作專業(yè)且易于理解的演示內容。本文介紹了如何在PPT中生成多種常用的圖表類型,如柱狀圖、條形圖、餅圖、折線圖、漏斗圖和瀑布圖等,并展示了如何從 Excel 讀取數據填充圖表。
除了本文例子中展示的圖表類型,你還可以嘗試很多其他圖表,如雷達圖、箱線圖等,以滿足不同的數據展示需求。
以上就是使用Python創(chuàng)建PowerPoint各種圖表的詳細教程的詳細內容,更多關于Python創(chuàng)建PowerPoint圖表的資料請關注腳本之家其它相關文章!
相關文章
Python使用ffmpeg合成視頻、音頻的實現(xiàn)方法
這篇文章主要介紹了Python使用ffmpeg合成視頻、音頻,通過本文的學習能幫助大家了解如何在python中調用ffmpeg模塊,對此進行音視頻合并,完成視頻合成,需要的朋友可以參考下2022-04-04
PyCharm Ctrl+Shift+F 失靈的簡單有效解決操作
這篇文章主要介紹了PyCharm Ctrl+Shift+F 失靈的簡單有效解決操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
python+appium實現(xiàn)自動化測試的示例代碼
appium是一個開源的測試自動化框架,可以與原生的、混合的和移動的web應用程序使用,本文主要介紹了python+appium實現(xiàn)自動化測試的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01

