PythonのXlsxWriterモジュールでExcelシートに棒グラフを作成する方法
棒グラフ(バーチャート)とは、カテゴリ別のデータを、その値に比例した高さや長さをもつ長方形の棒で表現するグラフの一種です。棒は縦方向・横方向どちらにも配置でき、縦向きの棒グラフは「縦棒グラフ(コラムチャート)」と呼ばれることもあります。
XlsxWriterで棒グラフを作成する
PythonのXlsxWriterモジュールを使うと、Excelファイル(.xlsx)の作成や編集をプログラムから簡単に行えます。以下のサンプルコードでは、ワークブックの生成からデータの書き込み、そして棒グラフの挿入までの一連の流れを実装しています。
サンプルコード
# xlsxwriterモジュールをインポート
import xlsxwriter
# Workbook()には必須引数として、作成したいファイル名を1つ指定する
workbook = xlsxwriter.Workbook('chart_bar.xlsx')
# ワークブックオブジェクトに対してadd_worksheet()メソッドで新しいワークシートを追加
worksheet = workbook.add_worksheet()
# add_format()メソッドでセルの書式を定義するFormatオブジェクトを作成
# ここでは太字(bold)の書式オブジェクトを作成
bold = workbook.add_format({'bold': 1})
# データのリストを作成
headings = ['Number', 'Batch 1', 'Batch 2']
data = [
[2, 3, 4, 5, 6, 7],
[80, 80, 100, 60, 50, 100],
[60, 50, 60, 20, 10, 20],
]
# 'A1'を起点に太字書式で見出し行を書き込む
worksheet.write_row('A1', headings, bold)
# 'A2'、'B2'、'C2'をそれぞれ起点として各列のデータを書き込む
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])
# add_chart()メソッドでワークシートに追加可能なチャートオブジェクトを作成
# ここでは棒グラフ(bar)オブジェクトを作成
chart1 = workbook.add_chart({'type': 'bar'})
# add_series()メソッドでグラフにデータ系列を追加
# 1つ目の系列を設定。「=Sheet1!$A$1」は['Sheet1', 0, 0]と同等
chart1.add_series({
'name': '= Sheet1 !$B$1',
'categories': '= Sheet1 !$A$2:$A$7',
'values': '= Sheet1 !$B$2:$B$7',
})
# 2つ目の系列を設定。範囲の指定には別の記法
# [シート名, 開始行, 開始列, 終了行, 終了列] を使用
chart1.add_series({
'name': ['Sheet1', 0, 2],
'categories': ['Sheet1', 1, 0, 6, 0],
'values': ['Sheet1', 1, 2, 6, 2],
})
# グラフタイトルを設定
chart1.set_title({'name': 'Results of data analysis'})
# X軸のラベルを設定
chart1.set_x_axis({'name': 'Test number'})
# Y軸のラベルを設定
chart1.set_y_axis({'name': 'Data length (mm)'})
# Excelのグラフスタイルを設定
chart1.set_style(11)
# グラフをワークシートに挿入。グラフの左上隅はセルE2に固定される
worksheet.insert_chart('E2', chart1)
# 最後にclose()メソッドでExcelファイルを閉じる
workbook.close()
コードのポイント
- Workbook():作成するExcelファイル名を必須引数として渡し、ワークブックオブジェクトを生成します。
- write_row() / write_column():見出しを行方向へ、データを列方向へそれぞれ書き込みます。
- add_chart():グラフの種類を「bar」と指定して棒グラフオブジェクトを作成します。
- add_series():グラフに表示するデータ系列を追加します。範囲の指定はA1形式の文字列と、[シート名, 行, 列] の配列形式の2通りの方法があります。
- set_title() / set_x_axis() / set_y_axis():グラフのタイトルや軸ラベルを自由にカスタマイズできます。
- insert_chart():作成したグラフをワークシート上の指定セル(E2)を起点として配置します。
- close():最後に呼び出すことで、Excelファイルへの書き込みが確定します。
実行結果
このスクリプトを実行すると、「chart_bar.xlsx」というファイルが生成され、2つのデータ系列(Batch 1とBatch 2)を比較する棒グラフがセルE2を起点として挿入されます。グラフには設定したタイトルやX軸・Y軸のラベルも自動的に反映され、set_style(11)によって適用されたExcel標準のスタイルで見栄えよく表示されます。
-
PythonのXlsxWriterモジュールでExcelワークシートにグラフを挿入する方法
Pythonには標準ライブラリ以外にも、個人開発者によって作られた優れた外部ライブラリが数多く存在し、Pythonにさまざまな追加機能をもたらしています。XlsxWriterもそのひとつで、Pythonプログラムのデータを含むExcelファイルを作成できるだけでなく、グラフ(チャート)の作成にも対応しています。 円グラフの作成手順 以下の例では、xlsxwriterを使って円グラフを作成します。処理の流れは以下のとおりです。 まずワークブックを定義し、その後にワークシートを追加します。 次にプロットするデータを定義し、Excelファイルのどの列にデータを書き込むかを指定します。 その列を参照
-
PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】
Pythonには、Excelファイル(.xlsx)を操作するためのopenpyxlという便利なモジュールが用意されています。このモジュールを使えば、Excelファイルの新規作成、データの書き込み・読み取り、シートの追加や管理など、さまざまな操作をプログラムから自動的に行うことができます。 本記事では、openpyxlの基本的な使い方を、実際に動作するサンプルコードとともに順番に解説していきます。 openpyxlのインストール方法 openpyxlは標準ライブラリではないため、まずインストールが必要です。コマンドプロンプト(またはターミナル)で以下のコマンドを実行してください。 pip ins