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
)に系列を追加して、シートに配置するという手順を踏みます。このプロセスにより、数値データから視覚的なグラフを自動で生成するレポート作成などが可能になります。