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

PythonのXlsxWriterモジュールでグラデーション塗りつぶしのExcelチャートを作成する方法

XlsxWriterは、Excelファイルに対して作成・書き込み・算術演算・グラフの描画など、さまざまな操作を行えるPythonライブラリです。このライブラリを使えば、Excel上で手作業で行うような高度な書式設定も、Pythonコードから自動的に適用できます。

グラデーション塗りつぶしとは

グラデーション塗りつぶしとは、チャートのデータ系列(棒グラフの棒など)を単一色ではなく、複数の色が滑らかにつながる形で塗る表現方法です。XlsxWriterでは、add_series()メソッドの「gradient」オプションに色のリストを指定するだけで、簡単にグラデーション効果を適用できます。

サンプルコード

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

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

# workbookオブジェクトを使い、add_worksheet()メソッドで新しいワークシートを追加します。
worksheet = workbook.add_worksheet()

# add_format()メソッドで、セルの書式を定義するFormatオブジェクトを作成します。
# ここでは太字フォーマットを作成しています。
bold = workbook.add_format({'bold': 1})

# チャートが参照するワークシートのデータを追加します。
headings = ['Number', 'Batch 1', 'Batch 2']
data = [
    [2, 3, 4, 5, 6, 7],
    [10, 40, 50, 20, 10, 50],
    [30, 60, 70, 50, 40, 30],
]

# 太字フォーマットを適用しながら、'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()メソッドで、ワークシートに追加できるチャートオブジェクトを作成します。
# ここでは縦棒(column)チャートを作成しています。
chart = workbook.add_chart({'type': 'column'})

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

# 2番目の系列も、グラデーションを含めて設定します。
chart.add_series({
    'name':       '=Sheet1!$C$1',
    'categories': '=Sheet1!$A$2:$A$7',
    'values':     '=Sheet1!$C$2:$C$7',
    'gradient':   {'colors': ['#E36C0A', '#FCEADA']}
})

# チャートタイトルを追加します。
chart.set_title({'name': 'Chart With Gradient Fills'})

# X軸のラベルを追加します。
chart.set_x_axis({'name': 'Test number'})

# Y軸のラベルを追加します。
chart.set_y_axis({'name': 'Sample length (mm)'})

# チャートの凡例を非表示にします。
chart.set_legend({'none': True})

# 指定したオフセット値付きでチャートをワークシートに挿入します。
# チャートの左上隅はセルD2に固定されます。
worksheet.insert_chart('D2', chart,
                       {'x_offset': 25, 'y_offset': 10})

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

コードのポイント

  • gradientオプション:「colors」キーに16進数カラーコードのリストを渡すことで、系列ごとに異なるグラデーションを設定できます。濃い色から薄い色へと変化する2色構成が基本です。
  • 数式内のスペースに注意:セル参照(例:=Sheet1!$B$1)に余分なスペースが含まれると、XlsxWriterが警告を出すため注意が必要です。
  • insert_chart()のオフセット:x_offsetとy_offsetを指定すると、アンカーとなるセル(ここではD2)からの相対位置にチャートを細かく配置できます。

このスクリプトを実行すると、「chart_gradient1.xlsx」というファイルが生成され、2つのデータ系列がそれぞれ赤系・オレンジ系のグラデーションで塗られた縦棒チャートを確認できます。プレゼン資料やレポートで視覚的に印象的なチャートを作りたい場合に、ぜひ活用してみてください。

  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