
売上の内訳や部門ごとの構成比を PowerPoint で示すとき、円グラフを使うと各項目が全体に占める割合を視覚的に伝えられます。中央に空白があるドーナツグラフも、構成比を表す際によく使われる形式です。
この記事では、Spire.Presentation for Python を使用して、PowerPoint スライドに円グラフとドーナツグラフを作成する方法を紹介します。グラフタイトルや項目名は日本語にし、各項目の色、数値と割合の表示も設定します。
Spire.Presentation for Python のインストール
Spire.Presentation for Python は、Python から PowerPoint ファイルの作成・編集・保存を行うためのライブラリです。スライドにグラフを追加し、データや表示形式をコードで設定できます。円グラフには ChartType.Pie、ドーナツグラフには ChartType.Doughnut を指定します。
次のコマンドでインストールします。
pip install Spire.Presentation
コードでは、次の名前空間をインポートします。
from spire.presentation import *
from spire.presentation.common import *
Python で PowerPoint に円グラフを作成する
最初の例では、四半期ごとの売上を円グラフで表示します。タイトルを「四半期別売上構成比」、分類名を「第1四半期」から「第4四半期」に設定し、それぞれの売上と割合を表示します。
作成の流れ
Presentationオブジェクトを作成します。- 最初のスライドに円グラフを追加します。
- グラフタイトルと元データを設定します。
- 系列名、分類ラベル、系列の値をデータ範囲に関連付けます。
- 各データポイントの色とデータラベルを設定します。
- PPTX ファイルとして保存します。
完全なコード
from spire.presentation import *
from spire.presentation.common import *
# プレゼンテーションを作成
presentation = Presentation()
presentation.SlideSize.Type = SlideSizeType.Screen16x9
# 最初のスライドに円グラフを追加
rect = RectangleF.FromLTRB(40, 100, 590, 420)
chart = presentation.Slides[0].Shapes.AppendChartInit(
ChartType.Pie, rect, False
)
# グラフタイトルを設定
chart.HasTitle = True
chart.ChartTitle.TextProperties.Text = "四半期別売上構成比"
chart.ChartTitle.TextProperties.IsCentered = True
chart.ChartTitle.Height = 30
# 四半期別の売上データを定義(単位:万円)
quarters = [
"第1四半期",
"第2四半期",
"第3四半期",
"第4四半期"
]
sales = [210, 320, 180, 460]
# グラフのデータテーブルに見出しを設定
chart.ChartData[0, 0].Text = "四半期"
chart.ChartData[0, 1].Text = "売上(万円)"
# 分類名と売上をデータテーブルに書き込み
for i, quarter in enumerate(quarters):
chart.ChartData[i + 1, 0].Text = quarter
chart.ChartData[i + 1, 1].NumberValue = sales[i]
# 系列名、分類ラベル、系列の値を設定
chart.Series.SeriesLabel = chart.ChartData["B1", "B1"]
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]
chart.Series[0].Values = chart.ChartData["B2", "B5"]
# 各データポイントに使用する色を定義
colors = [
Color.get_RosyBrown(),
Color.get_LightBlue(),
Color.get_LightPink(),
Color.get_MediumPurple()
]
# データポイントを追加して個別に配色
for i in range(len(sales)):
data_point = ChartDataPoint(chart.Series[0])
data_point.Index = i
data_point.Fill.FillType = FillFormatType.Solid
data_point.Fill.SolidColor.Color = colors[i]
chart.Series[0].DataPoints.Add(data_point)
# データラベルに数値と割合を表示
chart.Series[0].DataLabels.LabelValueVisible = True
chart.Series[0].DataLabels.PercentValueVisible = True
# PowerPoint ファイルとして保存
presentation.SaveToFile(
"四半期別売上_円グラフ.pptx",
FileFormat.Pptx2016
)
presentation.Dispose()
実行すると、四半期別売上_円グラフ.pptx が保存されます。スライドには、4 つの四半期を異なる色で表した円グラフが配置されます。

グラフの配置範囲を指定する
RectangleF.FromLTRB() には、グラフを配置する領域の左端、上端、右端、下端を指定します。
rect = RectangleF.FromLTRB(40, 100, 590, 420)
この例の配置領域は、幅が 590 - 40 = 550、高さが 420 - 100 = 320 です。第3・第4引数は、幅と高さではない点に注意してください。
データと表示項目を関連付ける
ChartData は、グラフの元データを格納するテーブルです。今回のコードでは、次のように使用しています。
| セル範囲 | 内容 | 設定先 |
|---|---|---|
| B1 | 売上(万円) | 系列名 |
| A2~A5 | 第1四半期~第4四半期 | 分類ラベル |
| B2~B5 | 各四半期の売上 | 系列の値 |
データを書き込んだ後、それぞれの範囲をグラフに関連付けます。
chart.Series.SeriesLabel = chart.ChartData["B1", "B1"]
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]
chart.Series[0].Values = chart.ChartData["B2", "B5"]
項目数を変更する場合は、データ範囲の終端も合わせて変更します。例えば、項目を 6 つに増やす場合は、分類ラベルを A2:A7、系列の値を B2:B7 に設定します。
数値と割合を表示する
次の設定で、データラベルに売上の数値と構成比を表示します。
chart.Series[0].DataLabels.LabelValueVisible = True
chart.Series[0].DataLabels.PercentValueVisible = True
割合だけを表示したい場合は、LabelValueVisible を False に変更してください。
なお、LabelValueVisible は数値の表示を制御するプロパティです。四半期名などの分類名を表示するための設定ではありません。
Python で PowerPoint にドーナツグラフを作成する
次に、年度別の売上データを使ってドーナツグラフを作成します。
基本的な処理は円グラフと同じですが、グラフの種類を ChartType.Doughnut に変更し、DoughnutHoleSize で中央の穴のサイズを設定します。
この例では、2020 年度から 2023 年度までの売上合計に対して、各年度が占める割合を表示します。
完全なコード
from spire.presentation.common import *
from spire.presentation import *
# プレゼンテーションを作成
presentation = Presentation()
presentation.SlideSize.Type = SlideSizeType.Screen16x9
# 最初のスライドにドーナツグラフを追加
rect = RectangleF.FromLTRB(80, 100, 630, 420)
chart = presentation.Slides[0].Shapes.AppendChartInit(
ChartType.Doughnut, rect, False
)
# グラフタイトルを設定
chart.HasTitle = True
chart.ChartTitle.TextProperties.Text = "年度別売上構成比"
chart.ChartTitle.TextProperties.IsCentered = True
chart.ChartTitle.Height = 30
# 年度別の売上データを定義(単位:万円)
years = ["2020年度", "2021年度", "2022年度", "2023年度"]
sales = [16500, 28000, 43200, 60000]
# グラフのデータテーブルに見出しを設定
chart.ChartData[0, 0].Text = "年度"
chart.ChartData[0, 1].Text = "売上(万円)"
# 年度と売上をデータテーブルに書き込み
for i, year in enumerate(years):
chart.ChartData[i + 1, 0].Text = year
chart.ChartData[i + 1, 1].NumberValue = sales[i]
# 系列名、分類ラベル、系列の値を設定
chart.Series.SeriesLabel = chart.ChartData["B1", "B1"]
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"]
chart.Series[0].Values = chart.ChartData["B2", "B5"]
# 各データポイントに使用する色を定義
colors = [
Color.get_LightBlue(),
Color.get_MediumPurple(),
Color.get_DarkGray(),
Color.get_DarkOrange()
]
# データポイントを追加して個別に配色
for i in range(len(sales)):
data_point = ChartDataPoint(chart.Series[0])
data_point.Index = i
data_point.Fill.FillType = FillFormatType.Solid
data_point.Fill.SolidColor.Color = colors[i]
chart.Series[0].DataPoints.Add(data_point)
# データラベルに数値と割合を表示
chart.Series[0].DataLabels.LabelValueVisible = True
chart.Series[0].DataLabels.PercentValueVisible = True
# ドーナツグラフの穴のサイズを設定
chart.Series[0].DoughnutHoleSize = 50
# PowerPoint ファイルとして保存
presentation.SaveToFile(
"年度別売上_ドーナツグラフ.pptx",
FileFormat.Pptx2016
)
presentation.Dispose()
実行すると、年度別売上_ドーナツグラフ.pptx が保存されます。タイトル、年度名、データテーブルの見出しは、すべて日本語で設定されています。

中央の穴のサイズを調整する
ドーナツグラフでは、次のプロパティで中央の穴のサイズを指定します。
chart.Series[0].DoughnutHoleSize = 50
値を大きくすると穴が広がり、リングが細くなります。値を小さくすると穴が狭まり、リングが太くなります。
表示する数値が多い場合は、穴のサイズだけでなく、グラフ全体の配置領域も調整し、ラベルが読みやすいか確認してください。
よくある質問
1. 既存の PowerPoint ファイルにも円グラフを追加できますか?
はい。Presentation オブジェクトを作成した後に既存ファイルを読み込み、対象のスライドへグラフを追加します。
presentation = Presentation()
presentation.LoadFromFile("入力資料.pptx")
その後は、例と同様に presentation.Slides[0] などで追加先を指定します。
2. 日本語のタイトルや項目名を設定できますか?
はい。コードの例のように、文字列へ直接日本語を指定できます。Python ファイルは UTF-8 で保存してください。
PowerPoint で開いた際の文字の見え方は、表示環境のフォントにも影響されるため、配布先で使用する環境でも確認すると安心です。
3. 各項目の色はどこで変更できますか?
各サンプルの colors リストで変更できます。リスト内の色は、データの並び順に対応しています。
項目数を増やす場合は、色の数も合わせて増やしてください。
4. 年度ごとの売上推移にもドーナツグラフが適していますか?
ドーナツグラフは、複数年度の合計に対する各年度の構成比を示す用途に使えます。一方、売上の増減や成長傾向を伝えたい場合は、棒グラフや折れ線グラフの方が比較しやすくなります。
まとめ
Spire.Presentation for Python を使うと、元データの登録から配色、数値・割合の表示までをコードで設定し、PowerPoint に円グラフやドーナツグラフを作成できます。
今回のサンプルでは、日本語のタイトルと分類名を設定しました。売上データや項目名を置き換えることで、商品別の販売構成比、部門別の予算配分、アンケート結果などの資料作成にも応用できます。
無料ライセンスを取得する
Spire.Presentation for Python の機能を評価制限なしで体験したい場合は、30 日間無料トライアルライセンス を申請できます。






