
openpyxlで散布図を作成する方法
この記事では、「openpyxl」ライブラリを使ってExcelに散布図(ScatterChart)を作成する方法を、サンプルコード付きでわかりやすく解説します。
「広告費と売上」の関係性を可視化する具体例を使いながら、グラフのタイトル設定、データの指定、マーカーの形やサイズ、線の表示スタイルなどを紹介しています。
Excel業務を効率化したい方や、Python×データ可視化の基礎を学びたい方におすすめの記事です!
ライブラリをインポート
まずは、Excelファイルの操作とグラフ作成に必要なライブラリを読み込みます。
from openpyxl import Workbook
from openpyxl.chart import ScatterChart, Reference, Series
元となるデータを準備する
散布図には数値データが必要です。以下は「広告費」と「売上」の例です。
wb = Workbook()
ws = wb.active
# ヘッダーとデータ
data = [
["広告費", "売上"],
[100, 400],
[150, 420],
[200, 480],
[250, 500]
]
for row in data:
ws.append(row)
ScatterChartオブジェクトを作成する
次に、散布図のオブジェクトを生成し、タイトルや軸ラベルを設定します。
chart = ScatterChart()
chart.title = "広告費と売上の関係"
chart.x_axis.title = "広告費(千円)"
chart.y_axis.title = "売上(千円)"
散布図のスタイルを変更する
scatterStyleは、散布図における線とマーカーの表示スタイルを指定するプロパティです。次のような値が使用可能です。
- line:線のみを描画(マーカーなし)
- marker:点(マーカー)のみを表示(線なし)
- lineMarker:線とマーカーを両方表示(デフォルト)
- smooth:滑らかな線のみを表示
- smoothMarker:滑らかな線+マーカー
例:
chart.scatterStyle = "marker"
マーカーの形を変更する
series.marker.symbolは、データ点(マーカー)の形状を設定するためのプロパティです。
- circle(円)
- square(四角)
- diamond(ひし形)
- triangle(三角形)
- x(バツ印)
例:
series.marker.symbol = "diamond"
マーカーのサイズを指定する
series.marker.sizeは、各マーカー(データ点)の表示サイズ(半径)を数値で指定します。
例:
series.marker.size = 8
データの範囲を指定してグラフに追加
X軸(広告費)とY軸(売上)のデータをそれぞれ参照し、グラフに紐づけます。
# X軸(広告費):A2~A5
x_values = Reference(ws, min_col=1, min_row=2, max_row=5)
# Y軸(売上):B2~B5
y_values = Reference(ws, min_col=2, min_row=2, max_row=5)
# Seriesとして追加(X, Yのセット)
series = Series(y_values, x_values, title="売上")
chart.series.append(series)
グラフをシートに挿入し、Excelファイルを保存
グラフをExcelシート上に配置し、ファイルとして保存します。
ws.add_chart(chart, "D2") # D2セルにグラフを挿入
wb.save("scatter_chart.xlsx")
公式ドキュメント
Scatter Charts — openpyxl 3.1.3 documentation
関連記事

【初心者OK】Python×openpyxlでExcelにグラフを描く方法を図解で解説!
はじめに「Excelでグラフを自動作成できたら便利だな…」そう思ったことはありませんか?そんな時に便利なのが、Pythonのライブラリopenpyxlです。この記事では、棒グラフを例にして、openpyxlでグラフを作成する基本ステップをわ...
コメント