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

PythonのXlsxWriterモジュールを使ってExcelシートにグラフをプロットする方法

XlsxWriterは、Excelファイルに対してさまざまな操作を実行できるPythonライブラリです。ファイルの作成やデータの書き込みはもちろん、算術演算やグラフのプロットなども行えます。

この記事では、XlsxWriterを使ってExcelシートに折れ線グラフ(ラインチャート)を作成し、「Up-Down Bars(上下バー)」を追加する方法を、実際のコード例とともに解説します。

全体の流れ

以下の手順でグラフ付きのExcelファイルを作成します。

  1. ワークブックとワークシートを作成する
  2. セルのフォーマット(斜体など)を定義する
  3. グラフの参照元となるデータを書き込む
  4. 折れ線グラフオブジェクトを作成し、上下バーを有効化する
  5. データ系列・タイトル・軸ラベルを設定する
  6. ワークシートにグラフを挿入してファイルを保存する

サンプルコード

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

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

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

# add_format()メソッドでセルのフォーマットオブジェクトを作成します
# ここでは斜体(イタリック)フォーマットを作成
italic = workbook.add_format({'italic': 1})

# グラフが参照するデータを定義します
Data1 = ['Subject', 'Mid Exam Score', 'End Exam Score']
Data2 = [
    ["Math", "Physics", "Computer", "Hindi", "English", "chemistry"],
    [90, 78, 60, 80, 60, 90],
    [45, 39, 30, 40, 30, 60]
]

# 'A1'を起点に、斜体フォーマットで1行分のデータを書き込みます
worksheet.write_row('A1', Data1, italic)

# 'A2'、'B2'、'C2'をそれぞれ起点に、列方向へデータを書き込みます
worksheet.write_column('A2', Data2[0])
worksheet.write_column('B2', Data2[1])
worksheet.write_column('C2', Data2[2])

# B列とC列の幅を15に設定します
worksheet.set_column('B:C', 15)

# add_chart()メソッドでワークシートに追加できるチャートオブジェクトを作成します
# ここでは折れ線グラフ(line)オブジェクトを作成
chart1 = workbook.add_chart({'type': 'line'})

# Up-Down Bars(上下バー)を追加します
chart1.set_up_down_bars()

# add_series()メソッドでチャートにデータ系列を追加します
# 最初の系列を設定。'= Sheet1!$A$1' は #['Sheet1', 0, 0] と同等です
# 注意:「=」と「Sheet1」、「Sheet1」と「!」の間にスペースを入れると警告が出るので入れないこと
chart1.add_series({
    'categories': '=Sheet1!$A$2:$A$7',
    'values':     '=Sheet1!$B$2:$B$7',
})

# 2つ目の系列を設定します
chart1.add_series({
    'categories': '=Sheet1!$A$2:$A$7',
    'values':     '=Sheet1!$C$2:$C$7',
})

# グラフのタイトルを設定します
chart1.set_title({'name': 'Exam Score Distribution'})

# X軸のラベルを設定します
chart1.set_x_axis({'name': 'Subjects'})

# Y軸のラベルを設定します
chart1.set_y_axis({'name': 'Marks'})

# Excelのチャートスタイルを設定します
chart1.set_style(11)

# オフセット値を指定してワークシートにグラフを挿入します
# グラフの左上隅はセルD2にアンカーされます
worksheet.insert_chart('D2', chart1, {'x_offset': 20, 'y_offset': 5})

# 最後にclose()メソッドでExcelファイルを閉じて保存します
workbook.close()

コードのポイント解説

1. ワークブックとワークシートの作成

xlsxwriter.Workbook()にファイル名を渡すことでワークブックを作成し、add_worksheet()でワークシートを追加します。これがすべての操作の出発点となります。

2. Up-Down Bars(上下バー)の活用

set_up_down_bars()メソッドを呼び出すことで、2つのデータ系列間の増減を視覚的に表現する上下バーが自動的に追加されます。この例では「中間試験の点数」と「期末試験の点数」の差がひと目でわかるようになります。

3. データ系列の指定方法

add_series()では、categories(X軸の項目)とvalues(Y軸の値)をExcelの範囲指定形式(例:=Sheet1!$A$2:$A$7)で指定します。範囲指定の文字列内に余計なスペースを含めないように注意してください。スペースが入ると警告が発生します。

4. グラフの見た目の調整

set_title()set_x_axis()set_y_axis()でタイトルや軸ラベルを設定し、set_style()でExcel標準のスタイル番号を指定できます。最後にinsert_chart()でグラフを任意のセル位置に配置し、オフセット値で微調整も可能です。

実行結果

スクリプトを実行すると、カレントディレクトリにupdown_chart.xlsxというファイルが生成されます。ファイルを開くと、6科目の中間試験・期末試験の得点を比較する折れ線グラフがセルD2付近に表示され、点数の増減が上下バーで強調されているのが確認できます。

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

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

  2. Pythonのさまざまなグラフでデータを可視化する方法

    Pythonには、初心者でも手軽に扱えるデータ可視化ライブラリが数多く用意されています。これらのライブラリは、小規模なデータセットから大規模なデータセットまで幅広く対応できる点が大きな魅力です。データ可視化で特に広く使われているPythonライブラリは以下のとおりです。MatplotlibPandasPlotlySeaborn本記事では、1つの固定データセットを題材に、さまざまな種類のグラフを描画することで、データを多角的に分析する方法を解説します。今回使用するのは、インドの2019年における人口推計(単位:千人)に関する次のデータセットです。国・地域年バリアント値インド2019Medium(