どうも、shirokumaです。
前回の記事の続きでPythonをいじってみました。
当初はグラフを作れるのが第一歩だと思ってましたが、軽くググっただけで山のようにあるサンプルコードを使えば簡単なグラフは一瞬で書けました。
というものの、簡単でした!やってみて、で終わるのも味気ないので、例が少ないレーダーチャートを素人プログラマー目線(つまりは、よく理解していないけれど、どうやらちゃんと動いているようだ)で書いてみたいと思います。ちなみに、レーダーチャートは別名スパイダチャート、スターチャートと呼ばれるそうです。
では早速の素人ワザ、良いコードを真似ましょう。本家本元matplotlibのサンプルコードです。
このページにソースを丸々コピーすると問題あるかもしれないので、リンクを参考にしてください。
リンク先のコードをコピペで実行すれば、4個レーダーチャートができて目標を達成してしまうのですが、毎回4個書くことも少ないと思うので、素人なりに1個用に変えてみましょう。
まずimport numpy as np 〜 return verts まではそのまま使います。
グラフを書く核となる部分のようです。
そして、def example_data()は使わずに、今回は分かりやすくmainの部分に下記のように追記しておきます。data数が11なのでN=11、colorは1色なので’b’(青色)、としました。
if __name__ == ‘__main__’:
N = 11
theta = radar_factory(N, frame=’polygon’)
Title = ‘Test’
data = [0.0, 0.5, 0.6, 0.4, 0.7, 0.3, 0.8, 0.2, 0.9, 0.1, 1.0]
spoke_labels = [‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’,’k’]
color = ‘b’
fig, ax = plt.subplots(figsize=(8, 8),subplot_kw=dict(projection=’radar’))
fig.subplots_adjust(wspace=0.25, hspace=0.20, top=0.85, bottom=0.05)
fig, ax.set_rgrids([0.2, 0.4, 0.6, 0.8])
fig, ax.set_title(Title, weight=’bold’, size=’medium’, position=(0.5, 1.1),
horizontalalignment=’center’, verticalalignment=’center’)
fig, ax.plot(theta, data, color=color)
fig, ax.fill(theta, data, facecolor=color, alpha=0.50)
fig, ax.set_varlabels(spoke_labels)
plt.show()
サンプルの前半部分と合わせて実行するとこんな感じ。
ほとんどサンプルどおりですが。要は、少し変数を定義して、fig, axにレーダーチャートをセットして、
グリッド、タイトル、データプロット、デザイン、ラベルを追加していっているわけですね。
set_varlabelなどは今回記述を省略しているサンプルコードで定義されている動作をしています。
もちろん実際に動かすときは省略してはダメですよ。
とまぁ、shirokumaぐらいの素人でもネットでググりながら約1日ぐらいでこのあたりまではできましたので、
Pythonのハードルはそんなに高くないのかもしれません。
ちなみに余談ですがレーダーチャートのラベルごとに軸の大きさを変えるのは難しいようです。
Excelでは2軸までしかできなかったので、Pythonならと調べていたのですが、少し調べた限りではPythonでも例がなさそうです。
やはりそれぞれを割合に直してごにょごにょしないとダメなようです。
と、最後はわかる人にはわかる話になってしまいましたが、いかがだったでしょうか。
同じレベルぐらいの方の参考になれば幸い。
#リンク先も明示していますし、これぐらいの編集と実行結果を載せるのは問題ないと思っていますが、万が一問題があれば速やかに対応します。