PythonのXlsxWriterモジュールでExcelシートに散布図を作成・プロットする方法
散布図(Scatter Plot)とは、デカルト座標系(直交座標)を利用して、データセット内の通常2つの変数の値を点として視覚化するグラフの一種です。各点に色やマーカーの種類を割り当てることで、3つ目の変数の情報も同時に表示することができます。
PythonのXlsxWriterモジュールを使えば、コードから直接Excelファイルを生成し、その中に散布図を挿入できます。ここでは、実際に動作するサンプルコードを通じて、基本的な流れを解説します。
サンプルコード
以下のコードでは、「Number」「Batch 1」「Batch 2」の3列のデータをワークシートに書き込み、それをもとに2つの系列を持つ散布図を作成してセルE2に挿入します。
# xlsxwriterモジュールをインポート
import xlsxwriter
# Workbook()には必須引数として、作成したいファイル名を指定します
workbook = xlsxwriter.Workbook('chart_scatter.xlsx')
# add_worksheet()メソッドで新しいワークシートを追加します
worksheet = workbook.add_worksheet()
# add_format()メソッドでセルの書式を定義するFormatオブジェクトを作成します
# ここでは太字(bold)のフォーマットオブジェクトを作成しています
bold = workbook.add_format({'bold': 1})
# データリストを作成
headings = ['Number', 'Batch 1', 'Batch 2']
data = [
[2, 3, 4, 5, 6, 7],
[80, 80, 100, 60, 50, 100],
[60, 50, 60, 20, 10, 20],
]
# 太字フォーマットを適用しながら「A1」から1行分の見出しを書き込みます
worksheet.write_row('A1', headings, bold)
# 「A2」「B2」「C2」を起点として、それぞれの列データを書き込みます
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])
# add_chart()メソッドでワークシートに追加できるチャートオブジェクトを作成します
# ここではタイプに「scatter」(散布図)を指定しています
chart1 = workbook.add_chart({'type': 'scatter'})
# add_series()メソッドでチャートにデータ系列を追加します
# --- 1つ目の系列を設定 ---
# A1形式の文字列で範囲を指定します('=Sheet1!$A$1' は ['Sheet1', 0, 0] と同等)
# 注意:「=」と「Sheet1」、「Sheet1」と「!」の間にスペースを入れないでください。
# スペースが入ると警告が発生します
chart1.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
})
# --- 2つ目の系列を設定 ---
# 範囲の指定にはリスト構文も使用できます:
# [シート名, 開始行, 開始列, 終了行, 終了列]
chart1.add_series({
'name': ['Sheet1', 0, 2],
'categories': ['Sheet1', 1, 0, 6, 0],
'values': ['Sheet1', 1, 2, 6, 2],
})
# グラフのタイトルを設定
chart1.set_title({'name': 'Results of data analysis'})
# X軸のラベルを設定
chart1.set_x_axis({'name': 'Test number'})
# Y軸のラベルを設定
chart1.set_y_axis({'name': 'Data length (mm)'})
# Excelの組み込みチャートスタイルを設定
chart1.set_style(11)
# チャートをワークシートに挿入します
# チャートの左上隅はセルE2にアンカーされます
worksheet.insert_chart('E2', chart1)
# 最後にclose()メソッドを呼び出してExcelファイルを保存・終了します
workbook.close()コードのポイント解説
1. ワークブックとワークシートの準備
xlsxwriter.Workbook()にファイル名を渡すと新しいExcelファイルが作成され、add_worksheet()でその中にワークシートを追加できます。戻り値のオブジェクトを通じて、以降のすべての操作を行います。
2. データの書き込み
write_row()は1行単位、write_column()は1列単位でデータを書き込むための便利なメソッドです。見出し行にはadd_format()で作成した太字フォーマットを適用し、可読性を高めています。
3. 散布図オブジェクトの生成
add_chart()の引数で{'type': 'scatter'}を指定すると、散布図用のチャートオブジェクトが生成されます。この部分を変更すれば、折れ線グラフや棒グラフなど他の種類のチャートも同じ手順で作成できます。
4. データ系列(シリーズ)の追加方法は2通り
- A1形式の文字列:
'=Sheet1!$B$2:$B$7'のように、Excelでおなじみのセル参照の書き方で範囲を指定します。スペースを挟むとエラーになるため注意が必要です。 - リスト形式:
['Sheet1', 開始行, 開始列, 終了行, 終了列]のようにゼロ始まりのインデックスで範囲を指定します。プログラム的に範囲を計算したい場合に便利です。
5. グラフの体裁を整える
set_title()、set_x_axis()、set_y_axis()でタイトルと軸ラベルを設定でき、set_style()に番号を渡すことでExcel組み込みの配色スタイルを一括適用できます。
6. 挿入位置とファイルの保存
insert_chart()の第1引数にセル番地を指定すると、そのセルを左上隅としてチャートが配置されます。最後にclose()を忘れるとファイルが正しく保存されないので、必ず呼び出しましょう。
まとめ
XlsxWriterを使えば、PythonのスクリプトだけでExcelファイルへのデータ書き込みから散布図の挿入までを自動化できます。レポート生成やデータ分析結果の配布などを定期的に行う場合、この手法を活用することで作業を大幅に効率化できるでしょう。
-
PythonのXlsxWriterモジュールでExcelワークシートにグラフを挿入する方法
Pythonには標準ライブラリ以外にも、個人開発者によって作られた優れた外部ライブラリが数多く存在し、Pythonにさまざまな追加機能をもたらしています。XlsxWriterもそのひとつで、Pythonプログラムのデータを含むExcelファイルを作成できるだけでなく、グラフ(チャート)の作成にも対応しています。 円グラフの作成手順 以下の例では、xlsxwriterを使って円グラフを作成します。処理の流れは以下のとおりです。 まずワークブックを定義し、その後にワークシートを追加します。 次にプロットするデータを定義し、Excelファイルのどの列にデータを書き込むかを指定します。 その列を参照
-
PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】
Pythonには、Excelファイル(.xlsx)を操作するためのopenpyxlという便利なモジュールが用意されています。このモジュールを使えば、Excelファイルの新規作成、データの書き込み・読み取り、シートの追加や管理など、さまざまな操作をプログラムから自動的に行うことができます。 本記事では、openpyxlの基本的な使い方を、実際に動作するサンプルコードとともに順番に解説していきます。 openpyxlのインストール方法 openpyxlは標準ライブラリではないため、まずインストールが必要です。コマンドプロンプト(またはターミナル)で以下のコマンドを実行してください。 pip ins