openpyxlでグラフを作成する方法を紹介します。今回は折れ線グラフ作成方法を紹介します。
その他のグラフの作成方法はこちらをご覧ください。棒グラフ作成、円グラフ作成
1.アウトプットイメージ
まずはイメージを掴んでもらうため、完成グラフとコードを紹介します。

import openpyxl
#折れ線グラフ、適応範囲、軸の最大・最小値を設定するのに必要なクラスのインポート
from openpyxl.chart import LineChart, Reference
from openpyxl.chart.axis import Scaling
#グラフの基となるデータファイルのロード
wb = openpyxl.load_workbook('C:/Users/1/Desktop/python/openpyxl/折れ線グラフ作成.xlsx')
ws = wb['折れ線グラフ']
#軸の参照データを指定
item_x = Reference(ws, min_col=1, min_row=2, max_row=7)
item_y = Reference(ws, min_col=2, min_row=1, max_row=7)
#グラフのプロパティ設定
chart = LineChart()
chart.height =10; chart.width = 15
chart.y_axis.scaling = Scaling(min =100, max = 200)
chart.y_axis.majorUnit = 25
chart.title = '上期売上'
#グラフの値を追加
chart.add_data(item_y, titles_from_data=True)
chart.set_categories(item_x)
ws.add_chart(chart, 'E3')
wb.save('C:/Users/1/Desktop/python/openpyxl/折れ線グラフ作成.xlsx')
2.コードの説明
※コード説明前の注意事項
本記事ではopenpyxl 3.1.2の環境で実行しています。
以前3.1.5で実行した際にx軸、y軸の数字が表示されないなど、意図通りに動かないことがありましたので、必要に応じて3.1.2をインストールしてください。
pip uninstall openpyxl:現在のopenpyxlをアンインストール
pip install openpyxl==3.1.2:3.1.2のインストール
ここからコードの説明です。
from openpyxl.chart import LineChart, Reference
折れ線グラフ作成と参照範囲を指定する際に必要なクラスです。基本的に棒グラフを作成する際は使用します。
from openpyxl.chart.axis import Scaling
グラフ軸の範囲を指定する際に必要なクラスです。
item_x = Reference(ws, min_col=1, min_row=2, max_row=7)
item_y = Reference(ws, min_col=2, min_row=1, max_row=7)
それぞれx軸、y軸の参照範囲を示しています。x軸がA2~A7、y軸がB1~B7のデータを参照しています。(col=列、row=行)
chart = LineChart() :変数chartに折れ線グラフを定義。
chart.height =10; chart.width = 15 :グラフのサイズを高さ10、幅15に指定。
chart.y_axis.scaling = Scaling(min =100, max = 200) :y軸の表示範囲を100~200の範囲に指定。
chart.y_axis.majorUnit = 25 :y軸の目盛の表示単位を25に指定。
chart.title = ‘上期売上’ :グラフタイトルを定義。
chart.add_data(item_y, titles_from_data=True)
:取得した各月の値を追加。”titles_from_data=True”でB1行をグラフの値でなく表題と定義。
chart.set_categories(item_x) :取得した月を横軸に登録。
ws.add_chart(chart, ‘E3’) :グラフの左上をE3に設定。
3.複数の折れ線グラフ
棒グラフの種類の指定を変えることで積み上げグラフにすることもできます。

コードは
“item_y = Reference(ws, min_col=2, max_col=3, min_row=1, max_row=7)”
と”max_col=3″を加えてy軸の参照範囲をB列~C列までに拡げるだけです。
4.終わりに
openpyxlでの折れ線グラフ作成のしかたを紹介しました。自分はグラフ作成のプログラムをたまにしか書かず、その度にうまくいかずに色々なサイトで調べていたので、同じような境遇の人がこの記事で問題解決できれば嬉しいです。












