openpyxl でグラフの体裁を整え、見やすい横棒グラフ付きレポートを自動生成する方法

Excel グラフはデフォルト設定のままでは軸スケールや凡例が適切でない場合があり、レポート提出時に手動で修正する手間が発生しがちです。本記事では pandas で読み込んだ CSV データを openpyxl でシートへ貼り付けた後、BarChart のプロパティを細かく調整して「一目で分かる」横棒グラフを作成する手順を解説いたします。


目次

1. サンプルデータと出力ファイル

ファイル用途
division_sales.csv部門別売上データ(UTF‑8)
division_sales_chart.xlsxグラフ付きレポート(本記事で生成)

2. 必要ライブラリのインストール

pip install pandas openpyxl

3. 完成コード

import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
from openpyxl.utils.dataframe import dataframe_to_rows

# --- 1. CSV 読み込み ---
df_sales = pd.read_csv('division_sales.csv', encoding='utf-8')

# --- 2. ワークブック作成 ---
wb_report = Workbook()
sheet = wb_report.active
sheet.title = 'SalesData'

# DataFrame をシートへ転記(ヘッダー含む)
for row in dataframe_to_rows(df_sales, index=False, header=True):
    sheet.append(row)

# --- 3. グラフオブジェクト生成 ---
chart_bar = BarChart()
chart_bar.type = 'bar'          # 横棒グラフ
chart_bar.style = 10            # カラーパレット(任意)

# --- 4. データ系列・ラベル設定 ---
data_ref = Reference(
    sheet,
    min_col=2,        # 売上列
    min_row=1,
    max_col=2,
    max_row=sheet.max_row
)
label_ref = Reference(
    sheet,
    min_col=1,        # 部門名列
    min_row=2,
    max_row=sheet.max_row
)

chart_bar.add_data(data_ref, titles_from_data=True)
chart_bar.set_categories(label_ref)

# --- 5. 軸スケール・凡例・タイトルなどを調整 ---
chart_bar.y_axis.scaling.min = 0
chart_bar.y_axis.scaling.max = 4200        # 想定最大値
chart_bar.y_axis.title = 'Sales (Million JPY)'
chart_bar.x_axis.title = 'Division'

chart_bar.title = 'Division‑wise Sales'

chart_bar.width = 18      # cm 単位相当
chart_bar.height = 9

chart_bar.varyColors = True          # 系列ごとに色分け
chart_bar.legend.position = 'b'      # 凡例を下側に配置

# --- 6. シートへ挿入し保存 ---
sheet.add_chart(chart_bar, 'D3')
wb_report.save('division_sales_chart.xlsx')

4. コードのポイント解説

内容
chart_bar.style = 10Office 内蔵スタイルを指定すると、企業配色に近い落ち着いた色調になります。
varyColors = Trueデータ系列が 1 列でもカテゴリー別に色分けされ、棒の識別性が向上します。
legend.position = 'b''t'(上)・'r'(右)・'l'(左)・'b'(下)から選択可能です。
width / height値を大きくすると印刷時に見やすく、小さくすると空きスペースを有効活用できます。
Referencemin_row=1ヘッダー行を含めることで titles_from_data=True を有効化し、凡例ラベルに列見出しが表示されます。

5. よくある調整項目

要素プロパティ設定例
背景色chart_bar.plot_area.fillSolidFill(color='F2F2F2')
データラベルchart_bar.dataLabelsdataLabels.showVal = True
目盛間隔chart_bar.y_axis.majorUnit500 など任意数値
2 系列表示追加で add_data()chart_bar.add_data(Reference(...), from_rows=True)

まとめ

  • BarChart のプロパティを細かく指定することで、Excel 上で手動編集することなく、見やすいグラフ を自動生成できます。
  • 軸スケール・凡例配置・色分け を調整するだけでも、プレゼンや報告書での視認性が大幅に向上します。
  • スクリプトを定期バッチに組み込めば、最新 CSV を取り込みつつ常に体裁が整ったレポートを出力できます。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次