【初心者向け】Python×openpyxlでExcelに棒グラフを自動作成する方法を解説

はじめに

Excelで毎回グラフを手作業で作るのは面倒……。そんなあなたにおすすめなのが、Pythonのopenpyxlライブラリです。

本記事では、Python初心者の方でもすぐに使えるように、Excelファイルに棒グラフを自動で描画する方法をわかりやすく解説します。

売上データなどをもとに、1系列のシンプルなグラフ作成から、ラベルの装飾、複数系列の応用まで幅広く紹介。
業務効率化やレポート自動化を目指している方は、ぜひこの記事を参考にしてみてください。

openpyxlで棒グラフを作成する方法

ライブラリをインポート

まずは、Excelファイルの作成とグラフ描画に必要なモジュールを読み込みます。

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

データを準備する

棒グラフには、「カテゴリ」と「数値」のペアのデータが必要です。

wb = Workbook()
ws = wb.active

data = [
    ["月", "売上"],
    ["1月", 120],
    ["2月", 150],
    ["3月", 180],
    ["4月", 130]
]

for row in data:
    ws.append(row)

BarChartオブジェクトを作成する

棒グラフを描画するためには、まずBarChart()オブジェクトを作成し、グラフのタイトルや軸ラベルを設定します。

from openpyxl.chart import BarChart

chart = BarChart()
chart.title = "月別売上の推移"
chart.x_axis.title = "月"
chart.y_axis.title = "売上(千円)"

フォントサイズ・色のカスタマイズ

標準ではフォントのサイズや色は指定されませんが、txPr(Text Properties)を使えばタイトルや軸ラベルのデザインもカスタマイズできます。

from openpyxl.drawing.text import CharacterProperties

# タイトルに太字・色・サイズを設定
chart.title.txPr = CharacterProperties(sz=1800, b=True, solidFill="1F497D")

# X軸・Y軸ラベルのフォント設定
chart.x_axis.title.txPr = CharacterProperties(sz=1400, solidFill="333333")
chart.y_axis.title.txPr = CharacterProperties(sz=1400, solidFill="333333")
  • sz=1800 → フォントサイズ(単位:1/100 pt)
  • b=True → 太字指定
  • solidFill → 文字の色(16進カラーコード)
【保存版】openpyxlのカラーコード完全ガイド|初心者向けにRGBと色指定を解説
はじめにExcelのセルに色をつけたいけど、どんな色コードを使えばいいの?Python(openpyxl)で色を指定したいけど、RGBってなに?と悩んでいませんか?本記事では、初心者でもすぐに使えるように、openpyxlで使う色コードの基...

データとカテゴリをグラフに設定する

Excelシート上のデータを Reference()で指定し、グラフに連携させます。

# 数値データ(Y軸):B列(売上)
data_ref = Reference(ws, min_col=2, min_row=1, max_row=5)

# カテゴリ名(X軸):A列(月)
cats_ref = Reference(ws, min_col=1, min_row=2, max_row=5)

chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(cats_ref)
  • min_col:開始列(例:B列 → 2)
  • min_row:開始行(例:ヘッダー含めるなら1)
  • max_row:終了行(データがある最終行)

複数系列を描画するパターン

複数の数値データ(たとえば「売上」と「利益」)を同じ棒グラフに描画するには、列の範囲を広げて複数系列を同時に指定できます。

# データ:B列〜C列(売上と利益)
data_ref = Reference(ws, min_col=2, max_col=3, min_row=1, max_row=5)

# カテゴリ名:A列(月)
cats_ref = Reference(ws, min_col=1, min_row=2, max_row=5)

chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(cats_ref)

グラフをシートに挿入して保存する

作成したグラフをシートの任意のセルに表示し、Excelファイルとして保存します。

ws.add_chart(chart, "D2")  # D2セルにグラフを挿入
wb.save("bar_chart.xlsx")  # ファイル保存

公式ドキュメント

Charts — openpyxl 3.1.3 documentation

関連記事

【初心者向け】Python×openpyxlでExcelに折れ線グラフを自動作成する方法を解説
はじめにExcelに自動で折れ線グラフを描画したい場合、Pythonのopenpyxlライブラリが便利です。本記事では、openpyxlを使ってExcelファイルに折れ線グラフを作成する方法を、実用的なコードとともに紹介します。複数系列の追...

コメント

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