しぷぜん

しぷぜん

素人プログラマなおいがStep Zero to Oneしていくブログ

Pythonでデータを可視化するmatplotlib入門(折れ線編)

こんにちは、なおいです。

前回、 matplotlibというライブラリで散布図の描き方を書きましたので、今回は折れ線グラフを描いていきたいなと思います。最初のインストールやインポートについては 割愛しますので、前回の記事をご参照いただければ。。。 

ct-innovation01.hateblo.jp

 

 

f:id:ct-innovation01:20170927160405p:plain

折れ線グラフのプロット

1.基本
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 8, 3, 6, 5]

plt.plot(x,y)
plt.show()

散布図同様なんにも設定がいらなければ、これだけでプロットできます。

プロットした結果は以下の通りで、xとyは配列になっていて同じ数であれば、x[0]とy[0]の場所にプロットしてくれるため(1,1)となり、そのあとも同じインデックス同士の(2,8)、(3,3)、(4,6)、(5,5)とプロットされていくはずです。

 

f:id:ct-innovation01:20170928002232p:plain

問題なくプロットされてます。では、前回同様に見た目をカスタマイズしていきます。

 

2.プロットの見た目をいじる
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 8, 3, 6, 5]

plt.plot(x,y,label='test',linewidth=3,color='b',
marker='^',markeredgecolor="black"
) plt.legend() #凡例 plt.show()

赤文字部を追加することで今回はラインの太さと色、マーカーの表示といったカスタマイズを行いました。散布図の時と同様にplotに付けられる主要なカスタマイズキーワードは表形式でグラフの後に載せときます。

 

f:id:ct-innovation01:20170928002617p:plain

 

次は目盛線を散布図とは違う方法でつけてみます。さらに、グラフタイトルとX軸Y軸のラベルを入れましょう。

 

Tips)プロットに付与できる主要なカスタマイズキーワード

主要と書いてます通り、こちらもたくさんキーワードはあります。より細かい指定で様々な折れ線グラフが描けますが、最低限これだけおさえてれいれば、普通のグラフは書けるかなという範囲のみ記載しておきます。

kywd 入力例 備考
x,y [1,2,3,4,5] または 事前に定義したlistなど array形式のもの
※必須
line関連
linewidth linewidth=5 ラインの太さ
linestyle linestyle="dashdot" ラインの形式
solidは実線
dashedは破線
dashdotは一点鎖線
dottedは点線
color color="red" または
color="#FFFF00" または
color=(1.0,0,1.0)
ラインの色
色名や16進数、RGBでの指定が可能
marker関連
marker marker="s" マーカーの形
指定しないと○
*は星形など様々指定可
markersize markersize=25/td> マーカーのサイズ
markerfacecolor markerfacecolor="b" または
markerfacecolor="#FFFF00" ,
markerfacecolor=(1.0,0,1.0)
マーカーの色
色名や16進数、RGBでの指定が可能
markeredgewidth markeredgewidth=3 マーカーの枠の太さ
markeredgecolor markeredgecolor="g" または
markeredgecolor="#ff0000" ,
markeredgecolor=(0,0,1.0)
マーカーの枠の色
色名や16進数、RGBでの指定が可能
label label="label1" 凡例名

色と形については、リファレンスを見ると以下のものが用意されているみたいです。

f:id:ct-innovation01:20170927115343p:plain

color example code: named_colors.py — Matplotlib 2.0.2 documentation

f:id:ct-innovation01:20170927115403p:plainf:id:ct-innovation01:20170927115416p:plain

lines_bars_and_markers example code: marker_reference.py — Matplotlib 2.0.2 documentation

 

3.グラフの見た目をいじる
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 8, 3, 6, 5]

plt.plot(x,y,label='test',linewidth=3,color='b',
marker='^',markeredgecolor="black") plt.legend() plt.minorticks_on() #副目盛線表示状態 plt.grid(which='major',color='black',linestyle='-') #目盛線 plt.grid(which='minor',axis='y',color='grey',linestyle='-.') #副目盛線 plt.xlabel("X-label") #X軸ラベル plt.ylabel("Y-label") #Y軸ラベル plt.title("TEST GRAPH") #グラフタイトル plt.show()

先ほど同様、赤文字部を追加することで見た目のカスタマイズを行いました。今回は、グリッド線をより細かく指定しています。実際のグラフが以下のものです。

 

f:id:ct-innovation01:20170928222355p:plain

 

うん、いい感じです。では、前回は散布図を複数同じグラフに入れましたが、今回は前回の散布図と今の折れ線グラフを重ねてみましょう。

 

4.一つのグラフに折れ線グラフと散布図を重ねてプロットする
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 8, 3, 6, 5]
y2 = [8, 2, 4, 3, 7]

plt.plot(x,y,label='test',linewidth=3,color='b',
marker='^',markeredgecolor="black") plt.scatter(x,y2,s=80, marker='p',c='red',label='test2') plt.legend() plt.minorticks_on() plt.grid(which='major',color='black',linestyle='-') plt.grid(which='minor',axis='y',color='grey',linestyle='-.') plt.xlabel("X-label") plt.ylabel("Y-label") plt.title("TEST GRAPH") plt.show()

前回、「同じグラフにプロットするだけならただもう一行追加するだけでいい。」と書きましたが、これは別のグラフでも適用されるんですね!非常にありがたい。

 

f:id:ct-innovation01:20170928222518p:plain

いかがでしたか?これで、折れ線グラフも書けるようになりました!

次回は、棒グラフ書いてみましょうかね。