使用 Python 在 PowerPoint 演示文稿中創建圖表

圖表用於數據的圖形表示,這使得分析更容易。因此,MS PowerPoint 支持一系列圖表以不同方式可視化數據。其中,最常用的圖表包括餅圖、折線圖、條形圖、直方圖、股票圖等。在本文中,您將學習如何使用 Python 在 PowerPoint PPT 或 PPTX 中創建這些圖表。

在 PowerPoint PPT 中創建圖表的 Python 庫

要在 PowerPoint PPT/PPTX 中創建圖表,我們將使用 Aspose.Slides for Python via .NET。它是一個功能豐富的庫,提供了一個完整的包來創建和操作 PowerPoint 演示文稿。您可以使用以下 pip 命令從 PyPI 安裝它。

> pip install aspose.slides

Aspose.Slides 支持多種可以動態添加到演示文稿中的圖表。在以下部分中,我們將演示如何創建一些流行的圖表類型。

用 Python 在 PowerPoint PPT 中創建柱形圖

在本節中,您將學習如何使用 Python 在 PowerPoint 演示文稿中創建柱形圖。以下是執行此操作的步驟。

  • 首先,創建 Presentation 類的一個實例。
  • 從對像中的 Presentations.slides 獲取幻燈片的引用。
  • 使用 Slide.shapes.addchart() 方法添加帶有默認數據的簇狀柱形圖。
  • 設置圖表標題和其他屬性,例如文本格式。
  • 使用 Chart.chartdata.chartdataworkbook() 方法將圖表數據工作簿訪問到對像中。
  • 分別使用 Chart.chartdata.series.clear() 和 Chart.chartdata.categories.clear() 方法從圖表數據中清除所有默認系列和類別。
  • 添加新系列和類別。
  • 將每個圖表系列訪問到一個對像中並向其添加數據點。
  • 為圖表系列添加填充顏色並設置標籤。
  • 最後,使用 Presentation.save(string, SaveFormat) 方法保存演示文稿。

以下代碼示例展示瞭如何使用 Python 在 PowerPoint PPT 中創建柱形圖。

import aspose.slides as slides
import aspose.pydrawing as drawing

# 創建演示文稿(或加載現有演示文稿) 
with slides.Presentation() as pres:

    # 訪問第一張幻燈片
    sld = pres.slides[0]

    # 添加具有默認數據的圖表
    chart = sld.shapes.add_chart(slides.charts.ChartType.CLUSTERED_COLUMN, 0, 0, 500, 500)

    # 設置圖表標題
    chart.chart_title.add_text_frame_for_overriding("Sample Title")
    chart.chart_title.text_frame_for_overriding.text_frame_format.center_text = 1
    chart.chart_title.height = 20
    chart.has_title = True

    # 設置第一個系列以顯示值
    chart.chart_data.series[0].labels.default_data_label_format.show_value = True

    # 設置圖表數據表索引
    defaultWorksheetIndex = 0

    # 獲取圖表數據工作表
    fact = chart.chart_data.chart_data_workbook

    # 刪除默認生成的系列和類別
    chart.chart_data.series.clear()
    chart.chart_data.categories.clear()
    s = len(chart.chart_data.series)
    s = len(chart.chart_data.categories)

    # 添加新系列
    chart.chart_data.series.add(fact.get_cell(defaultWorksheetIndex, 0, 1, "Series 1"), chart.type)
    chart.chart_data.series.add(fact.get_cell(defaultWorksheetIndex, 0, 2, "Series 2"), chart.type)

    # 添加新類別
    chart.chart_data.categories.add(fact.get_cell(defaultWorksheetIndex, 1, 0, "Caetegoty 1"))
    chart.chart_data.categories.add(fact.get_cell(defaultWorksheetIndex, 2, 0, "Caetegoty 2"))
    chart.chart_data.categories.add(fact.get_cell(defaultWorksheetIndex, 3, 0, "Caetegoty 3"))

    # 獲取第一個圖表系列
    series = chart.chart_data.series[0]

    # 填充系列數據
    series.data_points.add_data_point_for_bar_series(fact.get_cell(defaultWorksheetIndex, 1, 1, 20))
    series.data_points.add_data_point_for_bar_series(fact.get_cell(defaultWorksheetIndex, 2, 1, 50))
    series.data_points.add_data_point_for_bar_series(fact.get_cell(defaultWorksheetIndex, 3, 1, 30))

    # 設置系列的填充顏色
    series.format.fill.fill_type = slides.FillType.SOLID
    series.format.fill.solid_fill_color.color = drawing.Color.blue

    # 採取第二個圖表系列
    series = chart.chart_data.series[1]

    # 填充系列數據
    series.data_points.add_data_point_for_bar_series(fact.get_cell(defaultWorksheetIndex, 1, 2, 30))
    series.data_points.add_data_point_for_bar_series(fact.get_cell(defaultWorksheetIndex, 2, 2, 10))
    series.data_points.add_data_point_for_bar_series(fact.get_cell(defaultWorksheetIndex, 3, 2, 60))

    # 設置系列的填充顏色
    series.format.fill.fill_type = slides.FillType.SOLID
    series.format.fill.solid_fill_color.color = drawing.Color.orange

    # 第一個標籤將顯示類別名稱
    lbl = series.data_points[0].label
    lbl.data_label_format.show_category_name = True

    lbl = series.data_points[1].label
    lbl.data_label_format.show_series_name = True

    # 顯示第三個標籤的值
    lbl = series.data_points[2].label
    lbl.data_label_format.show_value = True
    lbl.data_label_format.show_series_name = True
    lbl.data_label_format.separator = "/"

    # 保存演示文稿
    pres.save("column-chart.pptx", slides.export.SaveFormat.PPTX)

下面是生成的柱形圖的截圖。

在 Python 中的 powerpoint 中創建柱形圖

用 Python 在 PowerPoint PPT 中創建散點圖

下面是用Python在PowerPoint PPT中製作散點圖的步驟。

  • 首先,創建 Presentation 類的一個實例。
  • 從對像中的 Presentations.slides 獲取幻燈片的引用。
  • 使用 Slide.shapes.addchart() 方法添加帶有默認數據的散點圖。
  • 使用 Chart.chartdata.chartdataworkbook() 方法將圖表數據工作簿訪問到對像中。
  • 向圖表數據添加新系列。
  • 將每個系列訪問一個對象並將數據點添加到該系列。
  • 設置系列的標記。
  • 最後,使用 Presentation.save(string, SaveFormat) 方法保存演示文稿。

以下代碼示例演示如何在 Python 中的 PowerPoint PPTX 中創建散點圖。

import aspose.slides as slides
import aspose.pydrawing as drawing

# 創建演示文稿(或加載現有演示文稿) 
with slides.Presentation() as pres:

    # 訪問第一張幻燈片    
    slide = pres.slides[0]

    # 創建默認圖表
    chart = slide.shapes.add_chart(slides.charts.ChartType.SCATTER_WITH_SMOOTH_LINES, 0, 0, 400, 400)

    # 獲取默認圖表數據工作表索引
    defaultWorksheetIndex = 0

    # 獲取圖表數據工作表
    fact = chart.chart_data.chart_data_workbook

    # 刪除演示系列
    chart.chart_data.series.clear()

    # 添加新系列
    chart.chart_data.series.add(fact.get_cell(defaultWorksheetIndex, 1, 1, "Series 1"), chart.type)
    chart.chart_data.series.add(fact.get_cell(defaultWorksheetIndex, 1, 3, "Series 2"), chart.type)

    # 獲取第一個圖表系列
    series = chart.chart_data.series[0]

    # 添加新點 (1:3)
    series.data_points.add_data_point_for_scatter_series(fact.get_cell(defaultWorksheetIndex, 2, 1, 1), fact.get_cell(defaultWorksheetIndex, 2, 2, 3))

    # 添加新點 (2:10)
    series.data_points.add_data_point_for_scatter_series(fact.get_cell(defaultWorksheetIndex, 3, 1, 2), fact.get_cell(defaultWorksheetIndex, 3, 2, 10))

    # 編輯系列類型
    series.type = slides.charts.ChartType.SCATTER_WITH_STRAIGHT_LINES_AND_MARKERS

    # 更改圖表系列標記
    series.marker.size = 10
    series.marker.symbol = slides.charts.MarkerStyleType.STAR

    # 採取第二個圖表系列
    series = chart.chart_data.series[1]

    # 添加新點 (5:2)
    series.data_points.add_data_point_for_scatter_series(fact.get_cell(defaultWorksheetIndex, 2, 3, 5), fact.get_cell(defaultWorksheetIndex, 2, 4, 2))

    # 添加新點 (3:1)
    series.data_points.add_data_point_for_scatter_series(fact.get_cell(defaultWorksheetIndex, 3, 3, 3), fact.get_cell(defaultWorksheetIndex, 3, 4, 1))

    # 添加新點 (2:2)
    series.data_points.add_data_point_for_scatter_series(fact.get_cell(defaultWorksheetIndex, 4, 3, 2), fact.get_cell(defaultWorksheetIndex, 4, 4, 2))

    # 添加新點 (5:1)
    series.data_points.add_data_point_for_scatter_series(fact.get_cell(defaultWorksheetIndex, 5, 3, 5), fact.get_cell(defaultWorksheetIndex, 5, 4, 1))

    # 更改圖表系列標記
    series.marker.size = 10
    series.marker.symbol = slides.charts.MarkerStyleType.CIRCLE

    # 保存演示文稿
    pres.save("scatter-chart.pptx", slides.export.SaveFormat.PPTX)

以下屏幕截圖顯示了生成的散點圖。

在 Python 中的 powerpoint 中創建散點圖

用 Python 在 PowerPoint PPT 中創建餅圖

下面是用Python在PowerPoint PPT中製作餅圖的步驟。

  • 首先,創建 Presentation 類的一個實例。
  • 從對像中的 Presentations.slides 獲取幻燈片的引用。
  • 使用 Slide.shapes.addchart() 方法添加帶有默認數據的餅圖。
  • 設置圖表標題和其他屬性,例如文本格式。
  • 設置值的可見性。
  • 分別使用 Chart.chartdata.series.clear() 和 Chart.chartdata.categories.clear() 方法從圖表數據中清除所有默認系列和類別。
  • 使用 Chart.chartdata.chartdataworkbook() 方法將圖表數據工作簿訪問到對像中。
  • 向圖表數據添加新類別。
  • 向圖表數據添加新系列。
  • 將每個系列訪問一個對象並將數據點添加到該系列。
  • 訪問每個數據點並設置其格式。
  • 將格式應用於數據點中的數據標籤。
  • 設置引出線和旋轉角度。
  • 最後,使用 Presentation.save(string, SaveFormat) 方法保存演示文稿。

以下代碼示例展示瞭如何使用 Python 在 PowerPoint PPTX 中創建餅圖。

import aspose.slides as slides
import aspose.pydrawing as drawing

# 創建演示文稿(或加載現有演示文稿) 
with slides.Presentation() as presentation:

    # 訪問第一張幻燈片
    slide = presentation.slides[0]

    # 添加具有默認數據的圖表
    chart = slide.shapes.add_chart(slides.charts.ChartType.PIE, 100, 100, 400, 400)

    # 設置圖表標題
    chart.chart_title.add_text_frame_for_overriding("Sample Title")
    chart.chart_title.text_frame_for_overriding.text_frame_format.center_text = 1
    chart.chart_title.height = 20
    chart.has_title = True

    # 設置第一個系列以顯示值
    chart.chart_data.series[0].labels.default_data_label_format.show_value = True

    # 設置圖表數據表索引
    defaultWorksheetIndex = 0

    # 獲取圖表數據工作表
    fact = chart.chart_data.chart_data_workbook

    # 刪除默認生成的系列和類別
    chart.chart_data.series.clear()
    chart.chart_data.categories.clear()

    # 添加新類別
    chart.chart_data.categories.add(fact.get_cell(0, 1, 0, "First Qtr"))
    chart.chart_data.categories.add(fact.get_cell(0, 2, 0, "2nd Qtr"))
    chart.chart_data.categories.add(fact.get_cell(0, 3, 0, "3rd Qtr"))

    # 添加新系列
    series = chart.chart_data.series.add(fact.get_cell(0, 0, 1, "Series 1"), chart.type)

    # 填充系列數據
    series.data_points.add_data_point_for_pie_series(fact.get_cell(defaultWorksheetIndex, 1, 1, 20))
    series.data_points.add_data_point_for_pie_series(fact.get_cell(defaultWorksheetIndex, 2, 1, 50))
    series.data_points.add_data_point_for_pie_series(fact.get_cell(defaultWorksheetIndex, 3, 1, 30))

    # 添加新點並設置扇區顏色
    chart.chart_data.series_groups[0].is_color_varied = True

    point = series.data_points[0]
    point.format.fill.fill_type = slides.FillType.SOLID
    point.format.fill.solid_fill_color.color = drawing.Color.orange

    # 設置扇區邊框
    point.format.line.fill_format.fill_type = slides.FillType.SOLID
    point.format.line.fill_format.solid_fill_color.color = drawing.Color.gray
    point.format.line.width = 3.0
    # point.format.line.style = slides.LineStyle.THIN_THICK
    # point.format.line.dash_style = slides.LineDashStyle.DASH_DOT

    point1 = series.data_points[1]
    point1.format.fill.fill_type = slides.FillType.SOLID
    point1.format.fill.solid_fill_color.color = drawing.Color.blue_violet

    # 設置扇區邊框
    point1.format.line.fill_format.fill_type = slides.FillType.SOLID
    point1.format.line.fill_format.solid_fill_color.color = drawing.Color.blue
    point1.format.line.width = 3.0
    # point1.format.line.style = slides.LineStyle.SINGLE
    # point1.format.line.dash_style = slides.LineDashStyle.LARGE_DASH_DOT

    point2 = series.data_points[2]
    point2.format.fill.fill_type = slides.FillType.SOLID
    point2.format.fill.solid_fill_color.color = drawing.Color.yellow_green

    # 設置扇區邊框
    point2.format.line.fill_format.fill_type = slides.FillType.SOLID
    point2.format.line.fill_format.solid_fill_color.color = drawing.Color.red
    point2.format.line.width = 2.0
    # point2.format.line.style = slides.LineStyle.THIN_THIN
    # point2.format.line.dash_style = slides.LineDashStyle.LARGE_DASH_DOT_DOT

    # 為新系列的每個類別創建自定義標籤
    lbl1 = series.data_points[0].label

    # lbl.show_category_name = True
    lbl1.data_label_format.show_value = True

    lbl2 = series.data_points[1].label
    lbl2.data_label_format.show_value = True
    lbl2.data_label_format.show_legend_key = True
    lbl2.data_label_format.show_percentage = True

    lbl3 = series.data_points[2].label
    lbl3.data_label_format.show_series_name = True
    lbl3.data_label_format.show_percentage = True

    # 顯示圖表的引導線
    # series.labels.default_data_label_format.show_leader_lines = True

    # 設置餅圖扇區的旋轉角度
    chart.chart_data.series_groups[0].first_slice_angle = 180

    # 保存演示文稿
    presentation.save("pie-chart.pptx", slides.export.SaveFormat.PPTX)

下面是生成的餅圖的截圖。

在 Python 中的 powerpoint 中創建餅圖

在 Python 中的 PowerPoint PPTX 中添加直方圖圖表

以下是使用Aspose.Slides for Python 在PowerPoint PPT 中製作直方圖圖表的步驟。

  • 首先,創建 Presentation 類的一個實例。
  • 從對像中的 Presentations.slides 獲取幻燈片的引用。
  • 使用 Slide.shapes.addchart() 方法添加帶有默認數據的直方圖圖表。
  • 清除默認系列和類別。
  • 使用 Chart.chartdata.chartdataworkbook() 方法將圖表數據工作簿訪問到對像中。
  • 向圖表數據添加新系列。
  • 將每個系列訪問一個對象並將數據點添加到該系列。
  • 設置圖表軸的聚合類型。
  • 最後,使用 Presentation.save(string, SaveFormat) 方法保存演示文稿。

以下代碼示例顯示瞭如何在 Python 中創建 PPTX 直方圖圖表。

import aspose.slides as slides
import aspose.pydrawing as drawing

# 創建演示文稿(或加載現有演示文稿) 
with slides.Presentation() as pres:

    # 添加圖表
    chart = pres.slides[0].shapes.add_chart(slides.charts.ChartType.HISTOGRAM, 50, 50, 500, 400)

    # 清除默認類別和系列
    chart.chart_data.categories.clear()
    chart.chart_data.series.clear()

    # 訪問工作簿
    wb = chart.chart_data.chart_data_workbook

    wb.clear(0)

    # 向系列添加數據點
    series = chart.chart_data.series.add(slides.charts.ChartType.HISTOGRAM)
    series.data_points.add_data_point_for_histogram_series(wb.get_cell(0, "A1", 15))
    series.data_points.add_data_point_for_histogram_series(wb.get_cell(0, "A2", -41))
    series.data_points.add_data_point_for_histogram_series(wb.get_cell(0, "A3", 16))
    series.data_points.add_data_point_for_histogram_series(wb.get_cell(0, "A4", 10))
    series.data_points.add_data_point_for_histogram_series(wb.get_cell(0, "A5", -23))
    series.data_points.add_data_point_for_histogram_series(wb.get_cell(0, "A6", 16))

    # 設置聚合類型
    chart.axes.horizontal_axis.aggregation_type = slides.charts.AxisAggregationType.AUTOMATIC

    # 保存演示文稿
    pres.save("histogram-chart.pptx", slides.export.SaveFormat.PPTX)

下面是創建的柱狀圖圖表的截圖。

在 Python 中的 powerpoint 中創建直方圖

使用 Python 在 PowerPoint 中創建股票圖表

股票圖表也是 PowerPoint 演示文稿中常用的圖表類型之一。以下是用Python在PPT中製作股票圖表的步驟。

  • 首先,創建 Presentation 類的一個實例。
  • 從對像中的 Presentations.slides 獲取幻燈片的引用。
  • 使用 Slide.shapes.addchart() 方法添加帶有默認數據的 Open High Low Close 圖表。
  • 清除默認系列和類別。
  • 使用 Chart.chartdata.chartdataworkbook() 方法將圖表數據工作簿訪問到對像中。
  • 向圖表添加新系列和類別。
  • 訪問每個圖表系列並添加數據點。
  • 指定高低線格式。
  • 最後,使用 Presentation.save(string, SaveFormat) 方法保存演示文稿。

以下代碼示例顯示瞭如何使用 Python 將股票圖表添加到 PowerPoint PPTX。

import aspose.slides as slides
import aspose.pydrawing as drawing

# 創建演示文稿(或加載現有演示文稿) 
with slides.Presentation() as pres:

    # 添加圖表
    chart = pres.slides[0].shapes.add_chart(slides.charts.ChartType.OPEN_HIGH_LOW_CLOSE, 50, 50, 600, 400, False)

    # 清除默認系列和類別
    chart.chart_data.series.clear()
    chart.chart_data.categories.clear()

    # 訪問工作簿
    wb = chart.chart_data.chart_data_workbook

    # 添加類別
    chart.chart_data.categories.add(wb.get_cell(0, 1, 0, "A"))
    chart.chart_data.categories.add(wb.get_cell(0, 2, 0, "B"))
    chart.chart_data.categories.add(wb.get_cell(0, 3, 0, "C"))

    # 添加系列
    chart.chart_data.series.add(wb.get_cell(0, 0, 1, "Open"), chart.type)
    chart.chart_data.series.add(wb.get_cell(0, 0, 2, "High"), chart.type)
    chart.chart_data.series.add(wb.get_cell(0, 0, 3, "Low"), chart.type)
    chart.chart_data.series.add(wb.get_cell(0, 0, 4, "Close"), chart.type)

    # 添加數據點
    series = chart.chart_data.series[0]

    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 1, 1, 72))
    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 2, 1, 25))
    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 3, 1, 38))

    series = chart.chart_data.series[1]
    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 1, 2, 172))
    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 2, 2, 57))
    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 3, 2, 57))

    series = chart.chart_data.series[2]
    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 1, 3, 12))
    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 2, 3, 12))
    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 3, 3, 13))

    series = chart.chart_data.series[3]
    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 1, 4, 25))
    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 2, 4, 38))
    series.data_points.add_data_point_for_stock_series(wb.get_cell(0, 3, 4, 50))

    chart.chart_data.series_groups[0].up_down_bars.has_up_down_bars = True
    chart.chart_data.series_groups[0].hi_low_lines_format.line.fill_format.fill_type = slides.FillType.SOLID

    # 設置系列填充格式
   for ser in chart.chart_data.series:
        ser.format.line.fill_format.fill_type = slides.FillType.NO_FILL

    # 保存演示文稿
    pres.save("stock-chart.pptx", slides.export.SaveFormat.PPTX)

以下是創建的股票圖表的屏幕截圖。

在 Python 中的 powerpoint 中創建股票圖表

更多關於圖表

您可以使用 Aspose.Slides for Python 添加許多其他圖表到 PowerPoint 演示文稿中。要閱讀有關支持的圖表類型的更多信息,您可以訪問本文檔文章

獲得免費許可證

您可以 獲得免費的臨時許可證 來試用該庫,而沒有評估限制。

結論

在本文中,您了解瞭如何使用 Python 在 PowerPoint PPT 或 PPTX 中創建圖表。我們已經完成瞭如何添加柱形圖、散點圖、餅圖、直方圖和股票圖的步驟和代碼示例。您可以使用 文檔 探索更多關於 Aspose.Slides for Python 的信息。如果您有任何問題或疑問,請通過我們的 論壇 告訴我們。

也可以看看