目次
使用環境
- OS:Windows 10 Pro(バージョン:20H2)
- 言語:Python(openpyxlライブラリ使用)
経緯
PythonでExcelファイルを操作する中で、
日付と体温データをもとに散布図(Scatter Chart)を作成したいと考えました。
そこで今回は、openpyxlライブラリを使用して散布図を作成する方法について学びました。
解決方法:ScatterChart
を使ってグラフを作成する
openpyxlでは、chart.ScatterChart
クラスを利用することで、
散布図を簡単に作成できます。
コード例(「まとめ」シートから散布図を作成)
import openpyxl as px
from openpyxl.chart import ScatterChart, Reference, Series
# Excelファイルを開く
wb = px.load_workbook("sample.xlsx")
ws = wb["まとめ"]
# 散布図オブジェクトを作成
chart = ScatterChart()
# グラフサイズの設定
chart.width = 18
chart.height = 10
# グラフタイトルと軸ラベルの設定
chart.title = "森の体温"
chart.x_axis.title = "Date"
chart.y_axis.title = "温度(℃)"
chart.legend = None
# データ範囲の指定
y_data = Reference(ws, min_col=2, max_col=2, min_row=2, max_row=1000) # B列(体温)
x_data = Reference(ws, min_col=1, max_col=1, min_row=2, max_row=1000) # A列(日付)
# データ系列の作成
series = Series(y_data, x_data)
series.graphicalProperties.line.noFill = True # 線なし
series.marker.symbol = "auto" # マーカーを自動設定
# グラフにデータ系列を追加
chart.series.append(series)
# シートにグラフを追加
ws.add_chart(chart, "A4")
# 保存
wb.save("sample_with_chart.xlsx")
コード解説
- **
ScatterChart()
**を作成して、散布図の基本枠を作ります。 - 幅・高さ、タイトル、軸ラベルを設定します。
- **Reference()**でX軸・Y軸のデータ範囲を指定します。
- **Series()**で、X・Yのデータを結びつけて系列化します。
- グラフに系列を追加し、指定したセル位置にグラフを配置します。
- 最後にファイルを保存します。
ポイントまとめ
- 散布図は**
ScatterChart
**を使って作成します。 Reference
関数を使って、シート内のデータ範囲を参照します。- マーカーのみを表示したい場合は、**線を消す設定(noFill)**を使うと見やすい散布図が作れます。
min_row
やmax_row
は、データ数に応じて適宜調整が必要です。
まとめ
Python(openpyxl)でExcelの散布図を作成するには、
ScatterChart()
を定義Reference()
でX軸・Y軸のデータ範囲を指定Series()
でデータを組み合わせてグラフに追加- シートに貼り付けて保存
という流れで簡単に実現できます。
グラフによる可視化は、データ分析や報告資料作成において非常に有効な手段ですので、
積極的に活用していきたいと思います。
ここまでお読みいただき、誠にありがとうございました。