【初心者向け】Python×openpyxlでExcelに円グラフを自動生成する方法を解説!

openpyxlで円グラフを作成する方法

本記事では、「openpyxl」ライブラリを使ってExcelファイルに円グラフを自動生成する方法について解説します。
カテゴリ別の売上データをもとにグラフを描き、データラベルの表示や凡例の位置調整など、よく使う設定項目も一緒に学べる内容となっています。
Excel業務を自動化したい方や、Python×Excelの活用方法を探している方にぴったりです!

ライブラリをインポートする

まずは、Excelファイルの作成とグラフ描画に必要なライブラリを読み込みます。

from openpyxl import Workbook
from openpyxl.chart import PieChart, Reference

円グラフの元になるデータを準備する

円グラフは「カテゴリ名」と「数値」のペアで構成されます。以下のように、Excelにデータを入力しましょう。

wb = Workbook()
ws = wb.active

# サンプルデータ(例:商品の売上構成)
data = [
    ["商品", "売上"],
    ["A商品", 300],
    ["B商品", 500],
    ["C商品", 200]
]

for row in data:
    ws.append(row)

PieChartオブジェクトを作成する

次に、PieChartオブジェクトを作成し、タイトルを設定します。

chart = PieChart()
chart.title = "商品別売上構成"

PieChartオブジェクトでよく使う主な設定項目

PieChartを使えば、見た目や表示内容を細かくカスタマイズできます。

dataLabels のオプション一覧

chart.dataLabelsでは、円グラフ上に表示する情報(数値・パーセンテージ・カテゴリ名など)を指定できます。

from openpyxl.chart.label import DataLabelList

chart.dataLabels = DataLabelList()
chart.dataLabels.showVal = True         # 値(数値)を表示
chart.dataLabels.showPercent = True     # 割合(%)を表示
chart.dataLabels.showCatName = True     # カテゴリ名を表示
  • showVal:売上金額などの「値」を表示
  • showPercent:割合(%)を表示。
  • showCatName:カテゴリ名(商品名など)を表示
chart.legend で位置を調整する

凡例(カテゴリ名)はデフォルトでグラフ右側に表示されますが、位置を変更することも可能です。

chart.legend.position = 't'  # 上(top)
# 他にも 'b'(下)、'l'(左)、'r'(右)、'tr'(右上)などが使用可能

データとカテゴリ(項目名)をグラフに設定する

グラフに表示するデータの範囲を指定し、add_data()と set_categories() でグラフと連携させます。

data_ref = Reference(ws, min_col=2, min_row=2, max_row=4)  # 売上列(数値)
cats_ref = Reference(ws, min_col=1, min_row=2, max_row=4)  # 商品列(項目名)

chart.add_data(data_ref, titles_from_data=False)
chart.set_categories(cats_ref)
  • min_col:開始列(例:B列 → 2)
  • min_row:開始行(例:ヘッダー含めるなら1)
  • max_row:終了行(データがある最終行)

グラフをシートに挿入し、Excelファイルを保存する

作成したグラフをExcelシート上の任意の位置に配置し、ファイルを保存します。

ws.add_chart(chart, "E2")  # E2セルに表示
wb.save("pie_chart.xlsx")

公式ドキュメント

Charts — openpyxl 3.1.3 documentation

関連記事

【初心者OK】Python×openpyxlでExcelにグラフを描く方法を図解で解説!
はじめに「Excelでグラフを自動作成できたら便利だな…」そう思ったことはありませんか?そんな時に便利なのが、Pythonのライブラリopenpyxlです。この記事では、棒グラフを例にして、openpyxlでグラフを作成する基本ステップをわ...

コメント

タイトルとURLをコピーしました