
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でグラフを作成する基本ステップをわ...
コメント