[解決!Python]Excelワークシートでグラフのスタイルを設定するには(OpenPyXL)解決!Python

グラフオブジェクトが持つstyle属性に1〜48の値を設定することで、グラフのスタイル(見た目)を指定できる。そのバリエーションを画像で紹介。

» 2022年04月26日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

グラフのstyle属性で指定可能なスタイル一覧 グラフのstyle属性で指定可能なスタイル一覧

グラフのstyle属性

 OpenPyXLが提供するグラフ関連のクラス(AreaChartクラスBarChartクラスなど)のインスタンスはstyle属性を持つ。この属性に1〜48の整数を設定することで、グラフのビジュアルを設定できる。これを一覧したのが冒頭の画像だ。

 上の画像は、BarChartクラス(棒グラフ)を例としているが、例えば折れ線グラフでは塗りつぶす部分がないので、グラデーションを使った塗りつぶし効果などは得られない。このようにグラフの種類によっては得られるスタイルが異なるが、それでも基本的な方向性は同様だ。

 上の画像を見れば分かる通り、スタイルは大きく8つのカラーバリエーションと6つのパターンの組み合わせで48種類となっている。

  • カラーバリエーション:白黒/多色/青/赤/緑/紫/水色/オレンジ
  • 6つのパターン:フラット/フラットで線色が白/フラットでグラデーションを使った塗りつぶし/立体的/フラットで背景色が薄いテーマ色/背景が黒で立体的

 グラフの種類ごとに、これらの全ての組み合わせを示すのは大変なので、多色(上の画像では棒グラフを青/赤/緑で塗り分けているもの)を使ったパターンについて、棒グラフ面グラフ折れ線グラフ散布図円グラフレーダーチャートドーナツグラフ株価チャートでどのようなスタイルで描画されるかを示す。他のカラーバリエーションについては以下の画像から想像できるだろう。

さまざまなグラフのスタイル さまざまなグラフのスタイル

 なお、本稿冒頭の画像は以下のコードで生成した48個の棒グラフをキャプチャーしたものだ。

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

values = [
    ('YEAR', 'A', 'B', 'C'),
    (2018, 750, 500, 300),
    (2019, 850, 700, 400),
    (2020, 700, 650, 500),
    (2021, 900, 800, 400)
]

for v in values:
    ws.append(v)

from openpyxl.chart import Reference, BarChart, AreaChart

rmin = ws.min_row
rmax = ws.max_row
cmin = ws.min_column
cmax = ws.max_column

src = Reference(ws, min_col=cmin+1, max_col=cmax, min_row=rmin, max_row=rmax)
cat = Reference(ws, min_col=cmin, min_row=rmax+1, max_row=rmax)

anc_x = ['A', 'F', 'K', 'P', 'U', 'Z', 'AE', 'AJ']
anc_y = [str(8 + 13 * idx) for idx in range(0, 6)]
anchors = [x + y for y in anc_y for x in anc_x]

for idx in range(1, 49):
    chart = BarChart()
    chart.add_data(src, titles_from_data=True)
    chart.set_categories(cat)
    chart.x_axis.title = 'YEAR'
    chart.title = f'style: {idx}'
    chart.width = 8.5
    chart.height = 6
    chart.anchor = anchors[idx-1]
    chart.style = idx
    ws.add_chart(chart)

wb.save(f'charts_{chart.__class__.__name__}.xlsx')


 他のグラフについても同様なコードでさまざまなスタイルのグラフを作成して、比較できるはずだ。

 グラフを描画する各種要素はそれらが持つGraphicalPropertiesクラスのインスタンスを直接操作することでも変更できる。実際の例については「Excelワークシートに折れ線グラフを作成するには」などを参照されたい。

「解決!Python」のインデックス

解決!Python

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。