openpyxlライブラリでは、スプレッドシート内のデータに基づいて、棒グラフ、線グラフ、円グラフなどのグラフをプログラムで作成し、シートに追加することができます。この記事では、その基本的な手順を解説します。
1. 準備:データの作成とモジュールのインポート
グラフを作成するには、まずシート上にグラフの元となるデータが必要です。また、openpyxl.chartから、作成したいグラフの種類(例: BarChart)と、グラフのデータを定義するためのReference、Seriesといったクラスをインポートします。
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)に系列を追加して、シートに配置するという手順を踏みます。このプロセスにより、数値データから視覚的なグラフを自動で生成するレポート作成などが可能になります。
