グラフオブジェクトが持つstyle属性に1〜48の値を設定することで、グラフのスタイル(見た目)を指定できる。そのバリエーションを画像で紹介。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
OpenPyXLが提供するグラフ関連のクラス(AreaChartクラス、BarChartクラスなど)のインスタンスはstyle属性を持つ。この属性に1〜48の整数を設定することで、グラフのビジュアルを設定できる。これを一覧したのが冒頭の画像だ。
上の画像は、BarChartクラス(棒グラフ)を例としているが、例えば折れ線グラフでは塗りつぶす部分がないので、グラデーションを使った塗りつぶし効果などは得られない。このようにグラフの種類によっては得られるスタイルが異なるが、それでも基本的な方向性は同様だ。
上の画像を見れば分かる通り、スタイルは大きく8つのカラーバリエーションと6つのパターンの組み合わせで48種類となっている。
グラフの種類ごとに、これらの全ての組み合わせを示すのは大変なので、多色(上の画像では棒グラフを青/赤/緑で塗り分けているもの)を使ったパターンについて、棒グラフ/面グラフ/折れ線グラフ/散布図/円グラフ/レーダーチャート/ドーナツグラフ/株価チャートでどのようなスタイルで描画されるかを示す。他のカラーバリエーションについては以下の画像から想像できるだろう。
なお、本稿冒頭の画像は以下のコードで生成した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ワークシートに折れ線グラフを作成するには」などを参照されたい。
Copyright© Digital Advantage Corp. All Rights Reserved.