機械学習などの多くのデータを扱う際に避けては通れないデータビジュアライズですが、Pythonで行うにはどうすればいいのか。ということで、matplotlibというライブラリを用いて折れ線グラフの描き方について解説していきます。

matplotlibとは

プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきている。描画したグラフを各種形式の画像(各種ベクトル画像形式も含む)として保存することもできる(Wiki参照)

ということで、2次元及び3次元のグラフをさくっとプロットできる非常にありがたいライブラリです。ちなみに、このロゴもmatplotlibで描いているものです。

 

基本ソース

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)とプロットされていくはずです。

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

プロットの見た目をいじる

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に付けられる主要なカスタマイズキーワードは表形式でグラフの後に載せときます。

次は目盛線を散布図とは違う方法でつけてみます。さらに、グラフタイトルと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″ 凡例名

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

色見本


color example code: named_colors.py — Matplotlib 2.0.2 documentation

 

マーカー見本



lines_bars_and_markers example code: marker_reference.py — Matplotlib 2.0.2 documentation

グラフの見た目をいじる

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()

コメントをつけているところを追記することで見た目のカスタマイズを行いました。今回は、グリッド線を細かく指定しています。実際のグラフが以下のものです。

最後に複数のプロットを一つに重ねて表示するプログラムを書いてみます。

グラフを重ねて表示する

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()

以前、「同じグラフにプロットするだけならただもう一行追加するだけでいい。」これはどのグラフにも当てはまるようです。
ここまで簡単にグラフを重ねて書けるのは非常にありがたいですね。

これで、折れ線グラフを表示するための基本事項は簡単に抑えられていると思います。これ以上見た目をカスタマイズしたい場合は本家のリファレンスを参照してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です