PythonとopenpyxlでExcelグラフを自動化!AreaChartとAreaChart3Dの使い方を徹底解説

openpyxl

毎月・毎週のように発生する定型的なExcelレポート作成。特に、数値の推移をグラフに起こす作業は、単純ながらも意外と時間がかかるものです。「この作業、ボタン一つで終わらないかな…」と思ったことはありませんか?

その願い、Pythonのopenpyxlライブラリが叶えます。

この記事では、Pythonを使ってExcelの面グラフ(Area Chart)作成を完全に自動化する方法を、AreaChart(2D)とAreaChart3D(3D)の使い方に焦点を当てて徹底的に解説します。

この記事を最後まで読めば、あなたは手作業でのグラフ作成から解放され、Pythonスクリプトを実行するだけで、いつでも見栄えの良いレポートを出力できるようになります。

  • 時系列データの推移を示す面グラフをPythonで自動生成できる
  • 基本的な2Dグラフと、インパクトのある3Dグラフを使い分けられる
  • 軸ラベルやスタイルを調整し、レポートの質を高める方法がわかる

さあ、Excel作業の自動化へ、大きな一歩を踏み出しましょう!

はじめに:AreaChart(面グラフ)でデータの推移を可視化する

まずは、なぜ面グラフがレポート自動化において強力なツールとなるのかを見ていきましょう。

AreaChart(面グラフ)の強み

AreaChart(面グラフ)は、折れ線グラフに似ていますが、線とX軸の間の領域が塗りつぶされているのが特徴です。これにより、単なる数値の「変化」だけでなく、**「ボリューム感」や「積み重ね」**を直感的に伝えることができます。

特に、複数のデータ系列を積み重ねて表示(積み上げ面グラフ)することで、全体の合計値の推移とその内訳の変化を一枚のグラフで雄弁に語ることができます。これは、月次の売上報告やプロジェクトの進捗管理など、多くのビジネスシーンで非常に有効です。

2Dと3Dの使い分け

openpyxlでは、標準的なAreaChartと、奥行きのあるAreaChart3Dの両方を作成できます。

  • AreaChart (2D): ビジネスレポートの基本形。データが正確に読み取れ、シンプルで分かりやすいのが特徴です。
  • AreaChart3D (3D): プレゼンテーションなど、視覚的なインパクトを重視する場面で効果を発揮します。

幸い、openpyxlではこの2つの切り替えが非常に簡単です。まずは基本の2Dからマスターしていきましょう。

準備:Pythonでグラフを作成するための環境とデータ

グラフ作成の自動化に向けた準備を整えます。

Step 1: openpyxlをインストール

何よりもまず、openpyxlライブラリが必要です。インストールがまだの方は、ターミナルやコマンドプロンプトで以下のコマンドを実行してください。

pip install openpyxl

Step 2: サンプルデータを作成するスクリプト

自動化の第一歩として、グラフの元となるデータをExcelファイルに出力する処理もPythonで書いてしまいましょう。今回は、ECサイトの複数カテゴリにおける月間アクセス数の推移を想定したデータを作成します。

import openpyxl

# 新しいワークブックとアクティブなシートを準備
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "月間アクセス数"

# グラフ化するサンプルデータをリストで定義
# ヘッダー行 + 6ヶ月分のデータ
access_data = [
    ["月", "家電カテゴリ", "書籍カテゴリ", "食品カテゴリ"],
    ["1月", 11000, 7800, 9200],
    ["2月", 12500, 8100, 9500],
    ["3月", 15000, 8500, 11000],
    ["4月", 14200, 8300, 10500],
    ["5月", 16500, 9200, 12300],
    ["6月", 18000, 9800, 13500],
]

# データをシートに1行ずつ書き込む
for row in access_data:
    ws.append(row)

# このExcelファイルを保存
wb.save("monthly_access_data.xlsx")

print("グラフの元となるデータファイルを作成しました。")

このコードを実行すれば、monthly_access_data.xlsxというファイルが手元に出来上がります。手作業は一切不要です。

【実践】AreaChart作成を自動化するPythonコード

準備が整いました。ここからは、先ほどのExcelファイルを読み込み、面グラフを追加して別名で保存するまでの一連の処理を自動化するコードを構築していきます。

手順1: ライブラリのインポートとファイルの読み込み

まず、必要なモジュールをインポートし、データが入力されたExcelファイルを読み込みます。

import openpyxl
from openpyxl.chart import AreaChart, Reference

# データを読み込む
wb = openpyxl.load_workbook("monthly_access_data.xlsx")
ws = wb.active

手順2: AreaChartオブジェクトの作成とデータ範囲の指定

グラフの本体となるAreaChartオブジェクトを作成し、グラフに描画したいデータの範囲をReferenceオブジェクトで定義します。ここが自動化の核となる部分です。

# 空のAreaChartオブジェクトを生成
chart = AreaChart()

# データ系列の範囲を指定 (B1セルからD7セル)
# min_row=1とすることでヘッダー行を凡例として認識させる
data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=7)

# X軸のラベル(カテゴリ)の範囲を指定 (A2セルからA7セル)
cats = Reference(ws, min_col=1, min_row=2, max_row=7)

手順3: チャートへのデータ設定と体裁の調整

Referenceで定義した範囲をチャートオブジェクトに設定し、タイトルなどの体裁を整えます。

# データをチャートに追加
# titles_from_data=True でヘッダーを凡例名として使用
chart.add_data(data, titles_from_data=True)

# X軸のラベルを設定
chart.set_categories(cats)

# グラフ全体のタイトルを設定
chart.title = "カテゴリ別 月間アクセス数推移"

# Y軸のタイトルを設定
chart.y_axis.title = "アクセス数"

手順4: ワークシートへのグラフ追加と保存

最後に、完成したグラフを指定したセル位置(ここではE2)に配置し、新しい名前でファイルを保存します。これでレポートが完成します。

# グラフをE2セルを左上として配置
ws.add_chart(chart, "E2")

# レポートとして新しいファイル名で保存
wb.save("access_report_with_areachart.xlsx")

print("面グラフ付きのレポートファイルを自動生成しました。")

このスクリプトを実行するだけで、誰が何度実行しても同じ品質のグラフ付きレポートが瞬時に完成します。これが自動化の力です。

【応用】AreaChart3Dで視覚的なインパクトを高める

レポートの種類によっては、より視覚的なインパクトが求められることがあります。その場合はAreaChart3Dを使いましょう。変更は驚くほど簡単です。

前のコードのAreaChartと書かれた部分をAreaChart3Dに書き換えるだけです。

# 変更点1: AreaChart3Dをインポート
from openpyxl.chart import AreaChart3D, Reference

# ... (ファイルの読み込みなどは同じ) ...

# 変更点2: AreaChart3D() を呼び出す
chart = AreaChart3D()

# ... (以降のデータ設定、保存処理は全く同じ) ...

たったこれだけで、グラフが立体的な3D表示に切り替わります。目的に応じて2Dと3Dを柔軟に使い分けられるのもopenpyxlの魅力です。

さらにレポートの質を高めるカスタマイズ術

自動化に慣れてきたら、さらに一歩進んで、より見やすいグラフを作るためのカスタマイズもコードに組み込んでみましょう。

  • グラフスタイルの変更: chart.style = 12のように数値を指定するだけで、Excelのプリセットデザインを適用できます。
  • 積み上げグラフへの変更: chart.grouping = "stacked"と設定すると、各カテゴリの数値を積み上げたグラフになり、全体の合計と内訳の推移を同時に把握できます。これは非常に強力な機能です。
  • 凡例の位置調整: chart.legend.position = 'b'とすれば、凡例をグラフの下部に移動できます。

これらの設定もws.add_chart()の前に数行書き加えるだけで実現可能です。

まとめ:定型業務をPythonで自動化しよう

今回は、openpyxlを使ってExcelの面グラフ作成を自動化する具体的な方法を解説しました。

  • 定型的なデータ準備からグラフ作成、保存までを一つのPythonスクリプトで完結できる
  • Referenceオブジェクトでデータ範囲を正確に指定することが自動化の鍵
  • AreaChartAreaChart3Dに変えるだけで簡単に3Dグラフが作成可能
  • スタイルやグラフの種類(積み上げなど)もコードで制御し、高品質なレポートを生成できる

今回紹介したコードをテンプレートとして、あなたの身の回りにある定型的なExcelレポート業務に応用してみてください。一度スクリプトを組んでしまえば、次からは実行するだけで作業が完了します。その積み重ねが、あなたの貴重な時間を生み出してくれるはずです。

コメント

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