サッカーを通じて観戦力と分析力を上げていくブログ

基本的にはサッカー×データに関して試してみたことをまとめています。最近はもっぱらPythonを使った可視化中心。時々自分の好きなガジェットも。

【Python】matplotlibで折れ線グラフの見た目を調整してみる

以前の記事で作成したmatplotlibを使った折れ線グラフの描画方法について、備忘録も兼ねて記載しておきます。

96lovefootball.hatenablog.com

 

matplotlibの概略

matplotlibとはPython用のグラフ描画ライブラリで、これを使うことで様々なグラフが比較的簡単に描けるようになります。(折れ線グラフぐらいではその利点をほぼ行かせていません。。)ちょっと癖のあるmatplotlibを使った描画の考え方については、以前の記事で簡単にまとめていますので、こちらも参考にしていただければと思います。

96lovefootball.hatenablog.com

特に下記の図は、コードを書いたり読み解いたりする際に役に立つので、頭の片隅に入れておくと良いです。

f:id:virgilvd:20181112213144p:plain

▲出典:Usage — Matplotlib 1.5.1 documentation

まずはmatplotlibを使用するため、ライブラリをインポートしておきます。(併せてnumpyも)

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

%matplotlib inlineはGoogle Colab等の環境でグラフを表示させるためのおまじないだと思って下さい。

 

折れ線の見た目(色、線の種類、マーカー)を変える

f:id:virgilvd:20190105111234p:plain

fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot(1,1,1)

ax.plot(df_lfc['Matchweek'],df_lfc['Liv 6-yard box'], color='tomato',  linestyle='-', marker='o')
ax.plot(df_lfc['Matchweek'],df_lfc['Liv Penalty Area'], color='red',  linestyle='-', marker='o')
ax.plot(df_lfc['Matchweek'],df_lfc['Liv Outside of box'], color='pink',  linestyle='-', marker='o')

ax.set_xticks(df_lfc['Matchweek'])
ax.set_xticklabels(df_lfc['Opp Abbreviation'])

ax.set_yticks(np.arange(0,21))
ax.set_ylabel('Liverpool Shoot Area')

plt.legend(bbox_to_anchor=(1, 1),loc='upper right')
plt.show()

上に載せたのが前回の記事内で使用したグラフとそのコードになります。以下はこれを元に記載していきます。

・色

まずは色について。折れ線グラフを描画する.plot( )内で引数colorで指定することによってその色で描画されるようになります。使用できる色は下記画像が参考になります。

f:id:virgilvd:20190105190033p:plain

▲出典:color example code: named_colors.py — Matplotlib 2.0.2 documentation

 ・線の種類

線の種類はlinestyleで指定することで変更できます。デフォルトでは、'-'になっています。

f:id:virgilvd:20190105204245p:plain

▲出典:Line-style reference — Matplotlib 3.0.2 documentation

 それぞれ'dotted'、'dashdot'、'dashed'、'solid'でも指定可能です。

・マーカー

こちらはmarkerで指定することが出来ます。かなりの種類があるので、詳しくは公式のリファレンスを参照いただければと思います。

f:id:virgilvd:20190105210747p:plain

 ▲出典:markers — Matplotlib 3.0.2 documentation

軸の値を変える

軸の表示を変えるには、.set_xticks( )と.set_xlabels( )を使用します。y軸を変えたい場合は、それぞれ.set_yticks( )と.set_ylabels( )となります。.set_xticks( )でグラフで表示されるメモリの間隔を決め、.set_xlabels( )でそのメモリに実際に表示する値を設定します。上記のグラフの例では、.set_xticks( )にマッチウィークの配列を指定し、1試合ごとにメモリが振られるようにし、.set_xlabels( )で各メモリに対戦相手が表示されるように設定しています。.set_xticks( )を指定しない場合は、下図のように適当な間隔でメモリが振られることとなるようです。

f:id:virgilvd:20190105215428p:plain

戦術や分析に関して、こういう見方もあるよ、こうして見た方がいいよ、などご意見等ありましたら、コメントで教えていただけると幸いです。ぜひよろしくお願いいたします!