PythonのopenpyxlでExcelグラフを作成する方法

openpyxlライブラリでは、スプレッドシート内のデータに基づいて、棒グラフ、線グラフ、円グラフなどのグラフをプログラムで作成し、シートに追加することができます。この記事では、その基本的な手順を解説します。


目次

1. 準備:データの作成とモジュールのインポート

グラフを作成するには、まずシート上にグラフの元となるデータが必要です。また、openpyxl.chartから、作成したいグラフの種類(例: BarChart)と、グラフのデータを定義するためのReferenceSeriesといったクラスをインポートします。

import openpyxl
from openpyxl.chart import BarChart, Reference, Series

# 新しいワークブックを作成
workbook = openpyxl.Workbook()
sheet = workbook.active

# グラフの元となるサンプルデータを書き込む
data = [
    ('Category', 'Value'),
    ('A', 20),
    ('B', 30),
    ('C', 50),
    ('D', 40),
]
for row in data:
    sheet.append(row)

2. グラフの作成手順

openpyxlでグラフを作成するには、通常、以下の3つのステップを踏みます。

1. Referenceオブジェクトの作成 Referenceオブジェクトは、グラフで使用するデータがシート上のどのセル範囲にあるかを定義します。min_col(開始列)、min_row(開始行)、max_col(終了列)、max_row(終了行)を指定します。

2. Seriesオブジェクトの作成 Seriesオブジェクトは、Referenceオブジェクトで定義したデータ範囲を、グラフ上の一つの系列(データ系列)としてまとめます。title引数で、凡例に表示される系列の名前を設定できます。

3. Chartオブジェクトの作成とシートへの追加 BarChart()LineChart()などで、作成したい種類のグラフオブジェクトを生成します。.append()メソッドでSeriesオブジェクトを追加し、最後にsheet.add_chart()で、グラフを配置するセルを指定してシートに追加します。


3. 完成したコード

これらのステップを統合した、棒グラフを作成してExcelファイルに保存する完全なコードは以下の通りです。

import openpyxl
from openpyxl.chart import BarChart, Reference, Series

# 新しいワークブックとシートを作成
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.title = 'ChartSample'

# グラフ用のデータをシートに追加
data_rows = [
    ('Category', 'Value'),
    ('A', 20),
    ('B', 30),
    ('C', 50),
    ('D', 40),
]
for row in data_rows:
    sheet.append(row)

# 手順1: グラフのデータ範囲を定義するReferenceオブジェクトを作成
# B列の2行目から5行目までのデータを対象とする
ref_obj = Reference(sheet, min_col=2, min_row=2, max_col=2, max_row=5)

# 手順2: データ系列を定義するSeriesオブジェクトを作成
series_obj = Series(ref_obj, title="Sample Series")

# 手順3: 棒グラフオブジェクトを作成し、設定を行う
chart_obj = BarChart()
chart_obj.title = "Sample Bar Chart" # グラフのタイトル
chart_obj.append(series_obj)

# グラフをD2セルを左上隅としてシートに追加
sheet.add_chart(chart_obj, "D2")

# ファイルに保存
workbook.save("chart_example.xlsx")
print("chart_example.xlsx を保存しました。")

このスクリプトを実行すると、chart_example.xlsxというファイルが作成され、シートChartSampleのD2セルの位置に棒グラフが挿入されていることを確認できます。

まとめ

openpyxlでグラフを作成するには、まずReferenceでシート上のデータ範囲を指定し、それをSeriesでデータ系列として定義し、最後に目的のChartオブジェクト(例: BarChart)に系列を追加して、シートに配置するという手順を踏みます。このプロセスにより、数値データから視覚的なグラフを自動で生成するレポート作成などが可能になります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次