Pythonとopenpyxlでデータ可視化!レーダーチャート(RadarChart)の作成からカスタマイズまで

openpyxl

はじめに:PythonでExcelのレーダーチャート作成を自動化しよう

「Pythonを使って、面倒なExcel作業を効率化したい…」 「レポートで使うレーダーチャートの作成を、毎回手作業でやるのが大変…」

もしあなたがこのように感じているなら、この記事はまさにうってつけです。

この記事では、Pythonの定番ライブラリである**openpyxl**を使って、Excelのレーダーチャートを自動で作成し、自由自在にカスタマイズする方法を、初心者の方にも分かりやすく丁寧に解説します。

この記事で解決できること

この記事を読み終える頃には、あなたは以下のスキルを習得しています。

  • PythonでExcelファイルを作成し、データを書き込む方法
  • openpyxlを使って基本的なレーダーチャートを作成する手順
  • 作成したチャートのタイトルやスタイルを自由に変更する方法
  • 複数のデータを重ね合わせた、より実践的なレーダーチャートを作成するテクニック

データの入力から綺麗なグラフの挿入まで、一連の作業をすべてPythonコードで完結できるようになりましょう。

レーダーチャートが活躍する場面とは

レーダーチャートは、複数の項目のバランスを一覧するのに非常に便利なグラフです。個人のスキルセットの可視化、製品スペックの比較、成績評価など、ビジネスからプライベートまで幅広いシーンで活用できます。この強力な可視化ツールをPythonで自動化する第一歩を、ここから踏み出しましょう。


準備:openpyxlライブラリのインストール

まずは、今回の主役であるopenpyxlライブラリを準備します。 Pythonの実行環境が既にある場合は、ターミナルやコマンドプロンプトで以下のコマンドを実行するだけでインストールは完了です。

pipを使ったopenpyxlのインストール方法

非常に簡単です。以下の1行を実行してください。

pip install openpyxl

既にインストール済みの場合や、最新版にしたい場合は、--upgradeオプションを付けると良いでしょう。この記事では、広く利用されているバージョン3.x系を想定して解説を進めます。


openpyxlによるレーダーチャート作成の基本ステップ

それでは、実際にレーダーチャートを作成していきましょう。 openpyxlでのグラフ作成は、いくつかの決まったステップを踏むことで実現できます。

まずは全体の流れを把握しよう

基本的なレーダーチャート作成は、以下の5つのステップで構成されます。

  1. ワークブック(Excelファイル)とワークシートの準備
  2. チャート用のサンプルデータを書き込む
  3. RadarChartオブジェクトを作成する
  4. データ範囲(Reference)と系列(Series)を指定する
  5. ワークシートにチャートを追加して保存する

この流れを一つずつ、サンプルコードと共に詳しく見ていきましょう。

Step 1. ワークブックとワークシートの準備

最初に、Excelファイルそのものと、データを書き込むシートを作成します。

from openpyxl import Workbook

# 1. 新しいワークブックを作成
wb = Workbook()
# アクティブなワークシートを取得
ws = wb.active
# ワークシートに名前を付ける
ws.title = "RadarChart_Basic"

このコードは、新しいExcelファイル(ワークブック)を作成し、デフォルトで存在する最初のシート(ワークシート)に「RadarChart_Basic」という名前を付けています。

Step 2. チャート用のサンプルデータを書き込む

次に、レーダーチャートの元となるデータをシートに書き込みます。 レーダーチャートは、**「項目」とそれに対応する「値」**のリストで構成されます。今回は、個人のスキルセットを想定したデータを用意してみましょう。

# 2. ヘッダーとサンプルデータをリストで準備
data = [
    ['スキル', 'レベル'],
    ['Python', 8],
    ['データ分析', 7],
    ['Web開発', 6],
    ['機械学習', 7],
    ['コミュニケーション', 9]
]

# データをシートのセルに書き込む
for row in data:
    ws.append(row)

ws.append()を使うと、リストの要素を1行ずつシートの最終行に簡単に追加できて便利です。この時点で、シートのA列にスキル名、B列にそのレベルが入力された状態になります。

Step 3. RadarChartオブジェクトを作成する

データが準備できたので、いよいよチャートオブジェクトを作成します。 openpyxl.chartモジュールからRadarChartクラスをインポートして、インスタンス化します。

from openpyxl.chart import RadarChart, Reference

# 3. RadarChartオブジェクトを作成
chart = RadarChart()

これだけで、空のレーダーチャートの器が用意できました。

Step 4. データ範囲(Reference)と系列(Series)を指定する

ここが最も重要なステップです。作成したチャートに、「Excelシートのどの範囲をデータとして使いますか?」と教えてあげる必要があります。この役割を担うのがReferenceクラスです。

# 4. グラフのデータ範囲とカテゴリ(項目ラベル)を指定
# データ範囲 (B2セルからB6セルまで)
data_ref = Reference(ws, min_col=2, min_row=2, max_row=6)
# カテゴリ範囲 (A2セルからA6セルまで)
labels_ref = Reference(ws, min_col=1, min_row=1, max_row=6)

# チャートにデータを追加
chart.add_data(data_ref, titles_from_data=True)
# チャートにカテゴリ(項目ラベル)を設定
chart.set_categories(labels_ref)
  • data_ref: min_col=2はB列、min_row=2は2行目を指します。つまり「B2からB6まで」の数値データ範囲を指定しています。
  • labels_ref: 同様に「A1からA6まで」の項目ラベル範囲を指定しています。ヘッダー(A1セル)も含めることで、凡例名を自動で設定できます。titles_from_data=Trueと組み合わせるのがポイントです。

Step 5. ワークシートにチャートを追加して保存

最後に、作成したチャートをワークシートの好きな位置に配置し、Excelファイルとして保存します。

# 5. チャートにタイトルを設定
chart.title = "個人スキル評価"

# ワークシートのD2セルを左上隅としてチャートを配置
ws.add_chart(chart, "D2")

# ファイルを保存
wb.save("MySkillRadarChart.xlsx")

print("レーダーチャートを含むExcelファイルを作成しました。")

ws.add_chart()の第2引数に"D2"のようにセル番地を指定すると、そのセルを左上にしてチャートが描画されます。 これで、すべての手順が完了です!実行後にMySkillRadarChart.xlsxというファイルを開いてみてください。


レーダーチャートを自由にカスタマイズする方法

基本のチャートが作れるようになったら、次はいよいよカスタマイズです。 openpyxlでは、チャートの見た目を細かく調整できます。よく使うカスタマイズ例をいくつかご紹介します。

チャートにタイトルを設定する

すでに行いましたが、チャートのタイトルはtitleプロパティで簡単に設定できます。分かりやすいタイトルを付けることは、伝わるグラフ作りの基本です。

chart.title = "個人スキル評価チャート"

塗りつぶしスタイル(Filled)に変更する

デフォルトのレーダーチャートは線だけで描画されますが、内側を塗りつぶしたスタイルに変更すると、より視覚的にインパクトが出ます。

# 塗りつぶしスタイルに変更
chart.type = "filled"

typeプロパティを"filled"に設定するだけです。"standard"がデフォルトの線のみのスタイルです。

軸の書式を調整する

Y軸(数値軸)の最大値や最小値を固定したい場合があります。例えば、評価が10段階評価なら、最大値を10に設定すると分かりやすくなります。

# Y軸(数値軸)の最大値を10に設定
chart.y_axis.scaling.max = 10
# Y軸の最小値を0に設定
chart.y_axis.scaling.min = 0

chart.y_axis.scalingプロパティから設定可能です。

凡例(凡例名)をカスタマイズする

凡例は、グラフのデータ系列が何を表しているかを示す重要な要素です。 Referenceでヘッダー行を含め、add_data時にtitles_from_data=Trueとすることで自動設定できますが、Seriesオブジェクトを直接操作して、より細かく設定することも可能です。

# (実践編で詳しく解説します)


【実践編】複数データのレーダーチャートを作成する

最後に、これまでの知識を総動員して、より実践的な「複数データの比較レーダーチャート」を作成してみましょう。ここでは「メンバーA」と「メンバーB」のスキルセットを1つのグラフ上で比較します。

2つのデータ系列を持つレーダーチャートの作成コード

基本の流れは同じですが、データ系列を2つ追加する点が異なります。

from openpyxl import Workbook
from openpyxl.chart import RadarChart, Reference

# --- 1. データの準備 ---
wb = Workbook()
ws = wb.active
ws.title = "TeamSkillComparison"

# 複数メンバーのスキルデータ
data = [
    ['スキル', 'メンバーA', 'メンバーB'],
    ['Python', 8, 9],
    ['データ分析', 7, 8],
    ['Web開発', 6, 9],
    ['機械学習', 7, 6],
    ['コミュニケーション', 9, 7]
]

for row in data:
    ws.append(row)

# --- 2. チャートの作成と設定 ---
chart = RadarChart()
chart.type = "filled" # 塗りつぶしスタイル
chart.title = "メンバー別スキル比較"
chart.y_axis.scaling.max = 10
chart.y_axis.scaling.min = 0

# --- 3. データ範囲とカテゴリの指定 ---
labels = Reference(ws, min_col=1, min_row=2, max_row=6) # スキル名
chart.set_categories(labels)

# --- 4. 複数のデータ系列を追加 ---
# B列 (メンバーA) のデータを追加
data_a = Reference(ws, min_col=2, min_row=1, max_row=6)
chart.add_data(data_a, titles_from_data=True)

# C列 (メンバーB) のデータを追加
data_b = Reference(ws, min_col=3, min_row=1, max_row=6)
chart.add_data(data_b, titles_from_data=True)

# --- 5. チャートの追加と保存 ---
ws.add_chart(chart, "E2")
wb.save("TeamSkillComparisonChart.xlsx")

print("複数データのレーダーチャートを作成しました。")

このコードでは、add_dataをメンバーの数だけ呼び出しています。Referenceでヘッダー行(1行目)を含めることで、「メンバーA」「メンバーB」という凡例が自動で正しく設定されます。


まとめ:openpyxlでデータ可視化をマスターしよう

今回は、Pythonのopenpyxlライブラリを使ってExcelのレーダーチャートを作成・カスタマイズする方法を解説しました。

最後に、本記事の重要ポイントを振り返りましょう。

  • pip install openpyxl で簡単に準備ができる。
  • Workbook, Worksheet でExcelファイルとシートを操作する。
  • RadarChart オブジェクトを作成し、グラフの土台を作る。
  • Reference クラスで、グラフ化したいデータのセル範囲を正確に指定する。
  • chart.add_data()chart.set_categories() でデータをチャートに紐付ける。
  • ws.add_chart() で、好きな位置にチャートを配置できる。
  • title, type, y_axis.scaling などのプロパティで見た目を柔軟にカスタマイズできる。

openpyxlを使いこなせば、これまで手作業で行っていた多くのExcelレポート作成業務を自動化できます。レーダーチャートだけでなく、棒グラフや円グラフなど、様々なグラフを作成する機能も備わっています。

ぜひ、この記事をきっかけにopenpyxlを使ったデータ可視化の世界を探求してみてください!

コメント

タイトルとURLをコピーしました