PythonのXlsxWriterモジュールでExcelシートに様々なスタイルのグラフを一括描画する方法
XlsxWriterは、Excelファイル(.xlsx)の作成やデータの書き込み、算術演算、グラフ(チャート)の描画など、多彩な操作をPythonから実行できるライブラリです。本記事では、XlsxWriterを使って、Excelに標準で用意されている複数の組み込みスタイルを適用したグラフを一括で描画する方法を解説します。
サンプルコード
以下のスクリプトでは、「縦棒(column)」と「面(area)」の2種類のグラフについて、Excelの48種類すべての組み込みスタイルを順番に適用し、1つのワークシート上に整然と並べて出力します。
# xlsxwriterモジュールをインポート
import xlsxwriter
# Workbook()は必須引数として、作成したいファイル名を受け取ります
workbook = xlsxwriter.Workbook('chart_styles.xlsx')
# 縦棒グラフと面グラフのスタイルを確認するためのリスト
chart_types = ['column', 'area']
for chart_type in chart_types:
# add_worksheet()メソッドで新しいワークシートを追加
# 各グラフタイプごとに専用のワークシートを作成
worksheet = workbook.add_worksheet(chart_type.title())
# ズーム率を設定
worksheet.set_zoom(30)
# スタイル番号を初期化
style_number = 1
# 48種類の組み込みスタイルを持つグラフを作成
# 各グラフの配置間隔は15行 × 8列
for row_num in range(0, 90, 15):
for col_num in range(0, 64, 8):
# add_chart()メソッドでワークシートに追加できる
# チャートオブジェクトを生成します
chart = workbook.add_chart({'type': chart_type})
# add_seriesメソッドでグラフにデータ系列を追加
chart.add_series({'values': '=Data!$A$1:$A$6'})
# グラフタイトルを設定
chart.set_title({'name': 'Style %d' % style_number})
# グラフの凡例を非表示にする
chart.set_legend({'none': True})
# Excelのグラフスタイルを設定
chart.set_style(style_number)
# グラフをワークシートに挿入
# グラフの左上隅がそれぞれのセル位置に固定されます
worksheet.insert_chart(row_num, col_num, chart)
# スタイル番号をインクリメント
style_number += 1
# データ書き込み用のワークシートを作成
data_worksheet = workbook.add_worksheet('Data')
# データリストを作成
data = [10, 40, 50, 20, 10, 50]
# 'A1'セルを起点に1列分のデータを書き込む
data_worksheet.write_column('A1', data)
# データ用ワークシートを非表示にする
data_worksheet.hide()
# 最後にclose()メソッドでExcelファイルを保存して閉じる
workbook.close()
コードのポイント解説
- ワークブックの生成:
xlsxwriter.Workbook('chart_styles.xlsx')で出力先となるExcelファイルを作成します。 - グラフタイプの切り替え: リスト
chart_typesに登録した「column(縦棒)」「area(面)」の2種類について、それぞれ専用のワークシートを自動的に用意します。 - 48スタイルの一括適用: 二重のforループで行方向に15セルずつ、列方向に8セルずつ間隔を空けてグラフを配置し、
set_style()メソッドによって1〜48番の組み込みスタイルを順番に割り当てます。 - 見た目の調整:
set_title()でスタイル番号をタイトル表示し、set_legend({'none': True})で凡例を消すことで、グラフ同士の比較がしやすくなります。 - データ参照元の管理: 数値データは「Data」シートのA1〜A6に書き込み、グラフ側から
=Data!$A$1:$A$6として参照させます。hide()を呼び出すことで、この作業用シートはユーザーから見えなくなります。 - 表示の最適化:
set_zoom(30)でズーム率を30%に下げることで、48個のグラフ全体を一目で確認できるレイアウトになります。
実行結果
スクリプトを実行すると、「Column」と「Area」という2枚のワークシートを含む chart_styles.xlsx が生成されます。各シートには異なるスタイルが適用された48個のグラフがグリッド状に整列しており、それぞれのタイトルにスタイル番号が付与されています。
このように、XlsxWriterの set_style() を活用すれば、コードをほとんど変更せずに多様なデザインのグラフを簡単に作り分けられます。「どのスタイルを使えばよいか迷う」ときの比較表としても、この手法は非常に便利です。
-
PythonのXlsxWriterモジュールでExcelワークシートにグラフを挿入する方法
Pythonには標準ライブラリ以外にも、個人開発者によって作られた優れた外部ライブラリが数多く存在し、Pythonにさまざまな追加機能をもたらしています。XlsxWriterもそのひとつで、Pythonプログラムのデータを含むExcelファイルを作成できるだけでなく、グラフ(チャート)の作成にも対応しています。 円グラフの作成手順 以下の例では、xlsxwriterを使って円グラフを作成します。処理の流れは以下のとおりです。 まずワークブックを定義し、その後にワークシートを追加します。 次にプロットするデータを定義し、Excelファイルのどの列にデータを書き込むかを指定します。 その列を参照
-
PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】
Pythonには、Excelファイル(.xlsx)を操作するためのopenpyxlという便利なモジュールが用意されています。このモジュールを使えば、Excelファイルの新規作成、データの書き込み・読み取り、シートの追加や管理など、さまざまな操作をプログラムから自動的に行うことができます。 本記事では、openpyxlの基本的な使い方を、実際に動作するサンプルコードとともに順番に解説していきます。 openpyxlのインストール方法 openpyxlは標準ライブラリではないため、まずインストールが必要です。コマンドプロンプト(またはターミナル)で以下のコマンドを実行してください。 pip ins