Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのXlsxWriterモジュールでExcelシートに面グラフ(エリアチャート)を作成する方法

面グラフとは

面グラフ(エリアチャート)は、1つ以上の数量が時間の経過とともにどのように変化するかを表現するグラフです。時間軸上に一連のデータポイントをプロットし、それらを線分で結んだ後、線とX軸の間の領域を色や網掛けで塗りつぶすことで作成されます。複数系列の量的な推移を比較したい場合に特に有効です。

XlsxWriterについて

XlsxWriterは、Excel 2007以降の形式(xlsxファイル)を生成するためのPythonライブラリです。セルの書式設定、数式、グラフなど多彩な機能を備えており、次のコマンドでインストールできます。

pip install XlsxWriter

面グラフを作成するサンプルコード

以下は、XlsxWriterを使ってワークシートにデータを書き込み、面グラフを挿入する完全なサンプルコードです。

# xlsxwriterモジュールをインポート
import xlsxwriter

# Workbook()には必須引数として、作成するファイル名を指定します
workbook = xlsxwriter.Workbook('chart_area.xlsx')

# add_worksheet()メソッドで新しいワークシートを追加します
worksheet = workbook.add_worksheet()

# add_format()メソッドでセルの書式オブジェクトを作成します
# ここでは太字フォーマットを作成しています
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'から列方向に書き込みます
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])

# add_chart()メソッドでワークシートに追加可能なチャートオブジェクトを作成します
# ここでは面グラフオブジェクトを作成しています
chart1 = workbook.add_chart({'type': 'area'})

# add_seriesメソッドでチャートにデータ系列を追加します
# 最初の系列を設定します
# '=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番目の系列を設定します。
# 範囲定義の別構文 [sheetname, first_row, first_col, last_row, last_col] を使用しています
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(): 作成するxlsxファイル名を引数に取り、ワークブックオブジェクトを生成します。
  • write_row() / write_column(): 見出しを行方向に、各系列のデータを列方向に書き込みます。
  • add_chart({'type': 'area'}): 「area」タイプを指定して面グラフのチャートオブジェクトを作成します。
  • add_series(): 系列名・カテゴリ・値を指定してデータ系列を追加します。範囲の指定には「=Sheet1!$B$2:$B$7」のようなA1参照形式と、['Sheet1', 行, 列] のようなインデックス形式の2種類があります。
  • set_title() / set_x_axis() / set_y_axis(): グラフのタイトルおよびX軸・Y軸のラベルを設定します。
  • insert_chart(): 指定したセル(ここではE2)を左上の基準位置としてグラフをワークシートに挿入します。
  • close(): ファイルへの書き込みを確定させます。この呼び出しを忘れるとファイルが正しく保存されないため注意が必要です。

実行結果

上記のコードを実行すると、カレントディレクトリに「chart_area.xlsx」が生成されます。ファイルを開くと、「Number」をX軸としてBatch 1とBatch 2の2つのデータ系列が面グラフとして描画され、セルE2を基準位置に配置されていることが確認できます。

  1. PythonのXlsxWriterモジュールでExcelワークシートにグラフを挿入する方法

    Pythonには標準ライブラリ以外にも、個人開発者によって作られた優れた外部ライブラリが数多く存在し、Pythonにさまざまな追加機能をもたらしています。XlsxWriterもそのひとつで、Pythonプログラムのデータを含むExcelファイルを作成できるだけでなく、グラフ(チャート)の作成にも対応しています。 円グラフの作成手順 以下の例では、xlsxwriterを使って円グラフを作成します。処理の流れは以下のとおりです。 まずワークブックを定義し、その後にワークシートを追加します。 次にプロットするデータを定義し、Excelファイルのどの列にデータを書き込むかを指定します。 その列を参照

  2. PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】

    Pythonには、Excelファイル(.xlsx)を操作するためのopenpyxlという便利なモジュールが用意されています。このモジュールを使えば、Excelファイルの新規作成、データの書き込み・読み取り、シートの追加や管理など、さまざまな操作をプログラムから自動的に行うことができます。 本記事では、openpyxlの基本的な使い方を、実際に動作するサンプルコードとともに順番に解説していきます。 openpyxlのインストール方法 openpyxlは標準ライブラリではないため、まずインストールが必要です。コマンドプロンプト(またはターミナル)で以下のコマンドを実行してください。 pip ins