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 = 10 | Office 内蔵スタイルを指定すると、企業配色に近い落ち着いた色調になります。 |
varyColors = True | データ系列が 1 列でもカテゴリー別に色分けされ、棒の識別性が向上します。 |
legend.position = 'b' | 't' (上)・'r' (右)・'l' (左)・'b' (下)から選択可能です。 |
width / height | 値を大きくすると印刷時に見やすく、小さくすると空きスペースを有効活用できます。 |
Reference の min_row=1 | ヘッダー行を含めることで titles_from_data=True を有効化し、凡例ラベルに列見出しが表示されます。 |
5. よくある調整項目
要素 | プロパティ | 設定例 |
---|
背景色 | chart_bar.plot_area.fill | SolidFill(color='F2F2F2') |
データラベル | chart_bar.dataLabels | dataLabels.showVal = True |
目盛間隔 | chart_bar.y_axis.majorUnit | 500 など任意数値 |
2 系列表示 | 追加で add_data() | chart_bar.add_data(Reference(...), from_rows=True) |
まとめ
- BarChart のプロパティを細かく指定することで、Excel 上で手動編集することなく、見やすいグラフ を自動生成できます。
- 軸スケール・凡例配置・色分け を調整するだけでも、プレゼンや報告書での視認性が大幅に向上します。
- スクリプトを定期バッチに組み込めば、最新 CSV を取り込みつつ常に体裁が整ったレポートを出力できます。