PythonのPowerPointプレゼンテーションでグラフを作成する

チャートはデータのグラフィック表現に使用され、分析を容易にします。したがって、MS PowerPointは、さまざまな方法でデータを視覚化するためのさまざまなグラフをサポートしています。中でも、最も一般的に使用されるグラフには、円グラフ、折れ線グラフ、棒グラフ、ヒストグラム、株価グラフなどがあります。この記事では、これらのグラフをPowerPointPPTまたはPythonのPPTXで作成する方法を学習します。

PowerPointPPTでグラフを作成するPythonライブラリ

PowerPoint PPT / PPTXでグラフを作成するには、Aspose.Slides for Python via .NETを使用します。これは、PowerPointプレゼンテーションを作成および操作するための完全なパッケージを提供する機能豊富なライブラリです。次のpipコマンドを使用して、PyPIからインストールできます。

> pip install aspose.slides

Aspose.Slidesは、プレゼンテーションに動的に追加できるさまざまなグラフをサポートしています。次のセクションでは、いくつかの一般的なタイプのグラフを作成する方法を示します。

PythonのPowerPointPPTで縦棒グラフを作成する

このセクションでは、PythonでPowerPointプレゼンテーションに縦棒グラフを作成する方法を学習します。この操作を実行する手順は次のとおりです。

  • まず、Presentationクラスのインスタンスを作成します。
  • オブジェクトのPresentations.slidesからスライドの参照を取得します。
  • Slide.shapes.add \ chart()メソッドを使用して、デフォルトデータを含むクラスター化縦棒グラフを追加します。
  • グラフのタイトルや、テキストの書式設定などの他のプロパティを設定します。
  • Chart.chart \ data.chart \ data \ workbook()メソッドを使用して、チャートデータワークブックにオブジェクトにアクセスします。
  • Chart.chart \ data.series.clear()メソッドとChart.chart \ data.categories.clear()メソッドをそれぞれ使用して、チャートデータからすべてのデフォルトの系列とカテゴリをクリアします。
  • 新しいシリーズとカテゴリを追加します。
  • 各チャートシリーズにアクセスしてオブジェクトにアクセスし、それにデータポイントを追加します。
  • チャートシリーズの塗りつぶし色を追加し、ラベルを設定します。
  • 最後に、Presentation.save(string, SaveFormat)メソッドを使用してプレゼンテーションを保存します。

次のコードサンプルは、PythonのPowerPointPPTで縦棒グラフを作成する方法を示しています。

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

# Create presentation (or load existing one) 
with slides.Presentation() as pres:

    # Access first slide
    sld = pres.slides[0]

    # Add chart with default data
    chart = sld.shapes.add_chart(slides.charts.ChartType.CLUSTERED_COLUMN, 0, 0, 500, 500)

    # Set chart title
    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

    # Set first series to show values
    chart.chart_data.series[0].labels.default_data_label_format.show_value = True

    # Set the index of chart data sheet
    defaultWorksheetIndex = 0

    # Get the chart data worksheet
    fact = chart.chart_data.chart_data_workbook

    # Delete default generated series and categories
    chart.chart_data.series.clear()
    chart.chart_data.categories.clear()
    s = len(chart.chart_data.series)
    s = len(chart.chart_data.categories)

    # Add new series
    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)

    # Add new categories
    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"))

    # Take first chart series
    series = chart.chart_data.series[0]

    # Populate series data
    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))

    # Set fill color for series
    series.format.fill.fill_type = slides.FillType.SOLID
    series.format.fill.solid_fill_color.color = drawing.Color.blue

    # Take second chart series
    series = chart.chart_data.series[1]

    # Populate series data
    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))

    # Set fill color for series
    series.format.fill.fill_type = slides.FillType.SOLID
    series.format.fill.solid_fill_color.color = drawing.Color.orange

    # First label will show category name
    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

    # Show value for third label
    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 = "/"

    # Save presentation
    pres.save("column-chart.pptx", slides.export.SaveFormat.PPTX)

以下は、結果の縦棒グラフのスクリーンショットです。

Pythonのパワーポイントで縦棒グラフを作成する

PythonのPowerPointPPTで散布図を作成する

以下は、PythonのPowerPointPPTで散布図を作成する手順です。

  • まず、Presentationクラスのインスタンスを作成します。
  • オブジェクトのPresentations.slidesからスライドの参照を取得します。
  • Slide.shapes.add \ chart()メソッドを使用して、デフォルトデータで散布図を追加します。
  • Chart.chart \ data.chart \ data \ workbook()メソッドを使用して、チャートデータワークブックにオブジェクトにアクセスします。
  • チャートデータに新しいシリーズを追加します。
  • 各シリーズにアクセスしてオブジェクトにアクセスし、データポイントをシリーズに追加します。
  • シリーズのマーカーを設定します。
  • 最後に、Presentation.save(string, SaveFormat)メソッドを使用してプレゼンテーションを保存します。

次のコードサンプルは、PythonのPowerPoint PPTXで散布図を作成する方法を示しています。

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

# Create presentation (or load existing one) 
with slides.Presentation() as pres:

    # Access first slide    
    slide = pres.slides[0]

    # Create the default chart
    chart = slide.shapes.add_chart(slides.charts.ChartType.SCATTER_WITH_SMOOTH_LINES, 0, 0, 400, 400)

    # Get the default chart data worksheet index
    defaultWorksheetIndex = 0

    # Get the chart data worksheet
    fact = chart.chart_data.chart_data_workbook

    # Delete demo series
    chart.chart_data.series.clear()

    # Add new series
    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)

    # Take first chart series
    series = chart.chart_data.series[0]

    # Add new point (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))

    # Add new point (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))

    # Edit the type of series
    series.type = slides.charts.ChartType.SCATTER_WITH_STRAIGHT_LINES_AND_MARKERS

    # Change the chart series marker
    series.marker.size = 10
    series.marker.symbol = slides.charts.MarkerStyleType.STAR

    # Take second chart series
    series = chart.chart_data.series[1]

    # Add new point (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))

    # Add new point (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))

    # Add new point (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))

    # Add new point (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))

    # Change the chart series marker
    series.marker.size = 10
    series.marker.symbol = slides.charts.MarkerStyleType.CIRCLE

    # Save presentation
    pres.save("scatter-chart.pptx", slides.export.SaveFormat.PPTX)

次のスクリーンショットは、結果の散布図を示しています。

Pythonのパワーポイントで散布図を作成する

PythonのPowerPointPPTで円グラフを作成する

以下は、PythonのPowerPointPPTで円グラフを作成する手順です。

  • まず、Presentationクラスのインスタンスを作成します。
  • オブジェクトのPresentations.slidesからスライドの参照を取得します。
  • Slide.shapes.add \ chart()メソッドを使用して、デフォルトのデータで円グラフを追加します。
  • グラフのタイトルや、テキストの書式設定などの他のプロパティを設定します。
  • 値の可視性を設定します。
  • Chart.chart \ data.series.clear()メソッドとChart.chart \ data.categories.clear()メソッドをそれぞれ使用して、チャートデータからすべてのデフォルトの系列とカテゴリをクリアします。
  • Chart.chart \ data.chart \ data \ workbook()メソッドを使用して、チャートデータワークブックにオブジェクトにアクセスします。
  • グラフデータに新しいカテゴリを追加します。
  • チャートデータに新しいシリーズを追加します。
  • 各シリーズにアクセスしてオブジェクトにアクセスし、データポイントをシリーズに追加します。
  • 各データポイントにアクセスし、そのフォーマットを設定します。
  • データポイントのデータラベルに書式を適用します。
  • 引出線と回転角を設定します。
  • 最後に、Presentation.save(string, SaveFormat)メソッドを使用してプレゼンテーションを保存します。

次のコードサンプルは、PythonのPowerPoint PPTXで円グラフを作成する方法を示しています。

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

# Create presentation (or load existing one) 
with slides.Presentation() as presentation:

    # Access first slide
    slide = presentation.slides[0]

    # Add chart with default data
    chart = slide.shapes.add_chart(slides.charts.ChartType.PIE, 100, 100, 400, 400)

    # Set chart title
    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

    # Set first series to show values
    chart.chart_data.series[0].labels.default_data_label_format.show_value = True

    # Set the index of chart data sheet
    defaultWorksheetIndex = 0

    # Get the chart data worksheet
    fact = chart.chart_data.chart_data_workbook

    # Delete default generated series and categories
    chart.chart_data.series.clear()
    chart.chart_data.categories.clear()

    # Add new categories
    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"))

    # Add new series
    series = chart.chart_data.series.add(fact.get_cell(0, 0, 1, "Series 1"), chart.type)

    # Populate series data
    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))

    # Add new points and set sector color
    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

    # Set sector border
    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

    # Set sector border
    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

    # Set sector border
    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

    # Create custom labels for each of categories for new series
    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

    # Show leader lines for chart
    # series.labels.default_data_label_format.show_leader_lines = True

    # Set rotation angle for pie chart sectors
    chart.chart_data.series_groups[0].first_slice_angle = 180

    # Save presentation
    presentation.save("pie-chart.pptx", slides.export.SaveFormat.PPTX)

以下は、生成された円グラフのスクリーンショットです。

Pythonのパワーポイントで円グラフを作成する

PythonのPowerPoint PPTXにヒストグラムチャートを追加する

以下は、Python用のAspose.Slidesを使用してPowerPointPPTでヒストグラムチャートを作成する手順です。

  • まず、Presentationクラスのインスタンスを作成します。
  • オブジェクトのPresentations.slidesからスライドの参照を取得します。
  • Slide.shapes.add \ chart()メソッドを使用して、デフォルトのデータでヒストグラムチャートを追加します。
  • デフォルトのシリーズとカテゴリをクリアします。
  • Chart.chart \ data.chart \ data \ workbook()メソッドを使用して、チャートデータワークブックにオブジェクトにアクセスします。
  • チャートデータに新しいシリーズを追加します。
  • 各シリーズにアクセスしてオブジェクトにアクセスし、データポイントをシリーズに追加します。
  • チャート軸の集計タイプを設定します。
  • 最後に、Presentation.save(string, SaveFormat)メソッドを使用してプレゼンテーションを保存します。

次のコードサンプルは、PythonのPPTXでヒストグラムチャートを作成する方法を示しています。

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

# Create presentation (or load existing one) 
with slides.Presentation() as pres:

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

    # Clear default categories and series
    chart.chart_data.categories.clear()
    chart.chart_data.series.clear()

    # Access workbook
    wb = chart.chart_data.chart_data_workbook

    wb.clear(0)

    # Add data points to series
    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))

    # Set aggregation type
    chart.axes.horizontal_axis.aggregation_type = slides.charts.AxisAggregationType.AUTOMATIC

    # Save presentation
    pres.save("histogram-chart.pptx", slides.export.SaveFormat.PPTX)

以下は、作成されたヒストグラムチャートのスクリーンショットです。

Pythonのパワーポイントでヒストグラムチャートを作成する

Pythonを使用してPowerPointで株価チャートを作成する

株価チャートは、PowerPointプレゼンテーションで一般的に使用されるチャートタイプの1つでもあります。以下は、PythonのPPTで株価チャートを作成する手順です。

  • まず、Presentationクラスのインスタンスを作成します。
  • オブジェクトのPresentations.slidesからスライドの参照を取得します。
  • Slide.shapes.add \ chart()メソッドを使用して、デフォルトデータでOpen HighLowCloseチャートを追加します。
  • デフォルトのシリーズとカテゴリをクリアします。
  • Chart.chart \ data.chart \ data \ workbook()メソッドを使用して、チャートデータワークブックにオブジェクトにアクセスします。
  • チャートに新しいシリーズとカテゴリを追加します。
  • 各チャートシリーズにアクセスし、データポイントを追加します。
  • HiLowLines形式を指定します。
  • 最後に、Presentation.save(string, SaveFormat)メソッドを使用してプレゼンテーションを保存します。

次のコードサンプルは、PythonでPowerPoint PPTXに株価チャートを追加する方法を示しています。

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

# Create presentation (or load existing one) 
with slides.Presentation() as pres:

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

    # Clear default series and categories
    chart.chart_data.series.clear()
    chart.chart_data.categories.clear()

    # Access workbook
    wb = chart.chart_data.chart_data_workbook

    # Add categories
    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"))

    # Add series
    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)

    # Add data points
    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

    # Set series fill formatting
    for ser in chart.chart_data.series:
        ser.format.line.fill_format.fill_type = slides.FillType.NO_FILL

    # Save presentation
    pres.save("stock-chart.pptx", slides.export.SaveFormat.PPTX)

以下は、作成された株価チャートのスクリーンショットです。

Pythonのパワーポイントで株価チャートを作成する

チャートの詳細

Aspose.Slides for Pythonを使用して、PowerPointプレゼンテーションに追加できるグラフは他にもたくさんあります。サポートされているチャートタイプの詳細については、このドキュメント記事にアクセスしてください。

無料ライセンスを取得する

無料の一時ライセンスを取得して、評価の制限なしにライブラリを試すことができます。

結論

この記事では、PowerPointPPTまたはPythonのPPTXでグラフを作成する方法を学びました。縦棒グラフ、散布図、円グラフ、ヒストグラム、株価グラフを追加する方法の手順とコードサンプルを確認しました。 ドキュメントを使用して、Python用のAspose.Slidesの詳細を調べることができます。ご不明な点やご質問がございましたら、フォーラムからお知らせください。

関連項目