縦棒グラフ(縦棒グラフ) は、カテゴリ間の比較を示すためにバーや柱を使用するデータのグラフ表現です。財務データ、統計データ、その他の定量的情報を表示するために一般的に使用されます。各柱はカテゴリを表し、柱の高さはそのカテゴリに関連付けられた値に対応します。縦棒グラフは PowerPoint 内で簡単に作成・カスタマイズでき、ユーザーはデータをすばやく視覚化できます。 この記事では、Python で Spire.Presentation for Python を使用して、PowerPoint プレゼンテーションでプログラム的に縦棒グラフを作成する方法を学びます。 クイックナビゲーション Python で PowerPoint にクラスタ縦棒グラフを作成 Python で PowerPoint にスタック縦棒グラフを作成 まとめ FAQ 1. Spire.Presentation for Python のインストール このシナリオには Spire.Presentation for Python と plum-dispatch v1.7.4 が必要です。以下の pip コマンドで簡単にインストールできます。 pip install Spire.Presentation Python スクリプトで必要なモジュールをインポートします。 from spire.presentation.common import * from spire.presentation import * または、Spire.Presentation for Python のダウンロードページ からライブラリを手動でダウンロードすることもできます。 1. Python で PowerPoint にクラスタ縦棒グラフを作成 クラスタ縦棒グラフは、棒(または柱)がクラスタまたはセグメントにグループ化されたバーグラフの一種であり、各クラスタはカテゴリを表し、クラスタ内の柱の高さはそのカテゴリのデータポイントの値を反映します。 Python で Spire.Presentation for Python を使用して PowerPoint にクラスタ縦棒グラフを追加するには、ISlide.Shapes.AppendChartInit(type: ChartType, rectangle: RectangleF, init: bool) メソッドをグラフタイプ ColumnClustered で使用し、IChart クラスのオブジェクトを返します。これを使用してグラフのデータ、タイトル、系列ラベル、カテゴリラベル、系列の値などの属性を設定できます。 以下は、Python で PowerPoint にクラスタ縦棒グラフを作成する手順です。 from spire.presentation.common import * from spire.presentation import * # Presentation オブジェクトを作成 presentation = Presentation() # スライドサイズのタイプを設定 presentation.SlideSize.Type = SlideSizeType.Screen16x9 # 最初のスライドを取得 slide = presentation.Slides[0] # クラスタ縦棒グラフを追加 rect = RectangleF.FromLTRB(40, 80, 700, 450) chart = slide.Shapes.AppendChartInit(ChartType.ColumnClustered, rect, False) # グラフのタイトルを設定 chart.ChartTitle.TextProperties.Text = "ソフトドリンクの売上" chart.ChartTitle.TextProperties.IsCentered = True chart.ChartTitle.Height = 25 chart.HasTitle = True # グラフにテキストを系列ラベルとして挿入 chart.ChartData[0,0].Text = "製品名" chart.ChartData[0,1].Text = "ストア A" chart.ChartData[0,2].Text = "ストア B" # グラフにテキストをカテゴリラベルとして挿入 chart.ChartData[1,0].Text = "ダイエットコーク" chart.ChartData[2,0].Text = "マウンテンデュー" chart.ChartData[3,0].Text = "ダイエットペプシ" chart.ChartData[4,0].Text = "チェリーコーク" # グラフに数値を系列の値として挿入 Series1 = [35000, 46000, 28000, 52000] Series2 = [41000, 32000, 36000, 40000] i = 0 while i < len(Series1): chart.ChartData[i + 1,1].NumberValue = Series1[i] chart.ChartData[i + 1,2].NumberValue = Series2[i] i += 1 # 系列ラベルを設定 chart.Series.SeriesLabel = chart.ChartData["B1","C1"] # カテゴリラベルを設定 chart.Categories.CategoryLabels = chart.ChartData["A2","A5"] # 系列の値を設定 chart.Series[0].Values = chart.ChartData["B2","B5"] chart.Series[1].Values = chart.ChartData["C2","C5"] # ギャップ幅を設定 chart.GapWidth = 350 # オーバーラップを設定 chart.OverLap = -50 # 各系列の塗りつぶし色を設定 chart.Series[0].Fill.FillType = FillFormatType.Solid chart.Series[0].Fill.SolidColor.Color = Color.get_CadetBlue() chart.Series[1].Fill.FillType = FillFormatType.Solid chart.Series[1].Fill.SolidColor.Color = Color.get_LightBlue() # データラベルを追加 for i in range(len(Series1)): chart.Series[0].DataLabels.Add() chart.Series[1].DataLabels.Add() # ドキュメントを保存 presentation.SaveToFile("output/ClusteredColumnChart.pptx", FileFormat.Pptx2019) presentation.Dispose() 2. Python で PowerPoint にスタック縦棒グラフを作成 スタック縦棒グラフ(積み上げ縦棒グラフ)は、標準的な縦棒グラフのバリエーションで、各柱がカテゴリを表し、柱の高さがカテゴリの合計値に対応します。 Python で PowerPoint にスタック縦棒グラフを追加するには、ISlide.Shapes.AppendChartInit(type: ChartType, rectangle: RectangleF, init: bool) メソッドをグラフタイプ ColumnStacked で使用し、IChart クラスのプロパティを使用してグラフのデータ、タイトル、系列ラベル、カテゴリラベル、系列の値などを設定できます。 以下は、Python で PowerPoint にスタック縦棒グラフを作成する手順です。 from spire.presentation.common import * from spire.presentation import * # Presentation オブジェクトを作成 presentation = Presentation() # スライドサイズのタイプを設定 presentation.SlideSize.Type = SlideSizeType.Screen16x9 # 最初のスライドを取得 slide = presentation.Slides[0] # スタック縦棒グラフを追加 rect = RectangleF.FromLTRB(40, 80, 700, 450) chart = slide.Shapes.AppendChartInit(ChartType.ColumnStacked, rect, False) # グラフタイトルを設定 chart.ChartTitle.Text = "ソフトドリンクの売上" chart.ChartTitle.TextProperties.IsCentered = True chart.ChartTitle.Height = 25 chart.HasTitle = True # テキストを系列ラベルとしてグラフに挿入 chart.ChartData[0,0].Text = "製品" chart.ChartData[0,1].Text = "ストアA" chart.ChartData[0,2].Text = "ストアB" # グラフにテキストをカテゴリラベルとして挿入 chart.ChartData[1,0].Text = "ダイエットコーク" chart.ChartData[2,0].Text = "マウンテンデュー" chart.ChartData[3,0].Text = "ダイエットペプシ" chart.ChartData[4,0].Text = "チェリーコーク" # 数値を系列の値としてグラフに挿入 Series1 = [35000, 46000, 28000, 52000] Series2 = [41000, 32000, 36000, 40000] i = 0 while i < len(Series1): chart.ChartData[i + 1,1].NumberValue = Series1[i] chart.ChartData[i + 1,2].NumberValue = Series2[i] i += 1 # 系列ラベルを設定 chart.Series.SeriesLabel = chart.ChartData["B1","C1"] # カテゴリラベルを設定 chart.Categories.CategoryLabels = chart.ChartData["A2","A5"] # 系列の値を設定 chart.Series[0].Values = chart.ChartData["B2","B5"] chart.Series[1].Values = chart.ChartData["C2","C5"] # ギャップ幅を設定 chart.GapWidth = 350 # オーバーラップを設定 chart.OverLap = -50 # 各系列の塗りつぶし色を設定 chart.Series[0].Fill.FillType = FillFormatType.Solid chart.Series[0].Fill.SolidColor.Color = Color.get_CadetBlue() chart.Series[1].Fill.FillType = FillFormatType.Solid chart.Series[1].Fill.SolidColor.Color = Color.get_LightBlue() # データラベルを追加 for i in range(len(Series1)): chart.Series[0].DataLabels.Add() chart.Series[1].DataLabels.Add() # ドキュメントを保存 presentation.SaveToFile("output/StackedColumnChart.pptx", FileFormat.Pptx2019) presentation.Dispose() まとめ 3章 本記事では、Spire.Presentation for Python を使用して Python で PowerPoint プレゼンテーションの縦棒グラフを作成する方法を実演しました。Presentation.Slides[].Shapes.AppendChart(type: ChartType, rectangle: RectangleF, init: bool) メソッドの ColumnClustered / ColumnStacked グラフタイプを使用してグラフを作成し、IChart クラスのプロパティを使用してグラフのタイトル、系列ラベル、カテゴリラベル、データ値などの属性を設定できます。これらの機能は、レポートの自動生成やデータ集計資料の作成、プレゼンテーションの一括編集などの自動化シナリオに役立ちます。 評価版の制限を解除したい場合や、機能制限を取り除きたい場合は、30 日間の無料ライセンスを申請できます。 4. FAQ Spire.Presentation のインストールには Microsoft PowerPoint が必要ですか? いいえ。Spire.Presentation はスタンドアロンのライブラリであり、Microsoft Office や PowerPoint をインストールする必要はありません。 クラスタ縦棒グラフとスタック縦棒グラフの違いは何ですか? クラスタ縦棒グラフは、カテゴリ のクラスタ内に複数の系列を並べて表示するのに対し、スタック縦棒グラフは各カテゴリの系列の値を積み重ねて合計を表示します。グラフの「積み上げ」効果をシミュレートするには、ChartType.ColumnStacked グラフタイプを使用します。 クラスタ縦棒グラフの外観をカスタマイズするには? 各系列の塗りつぶし色、GapWidth、OverLap のプロパティを設定でき、カスタマイズできます。例: chart.GapWidth = 350、chart.OverLap = -50、chart.Series[0].Fill.SolidColor.Color = Color.get_CadetBlue()