Python > matplotlibによるグラフ描画

更新日 2014-11-02
広告
matplotlibを使うと、gnuplotのようなグラフを作成できます。 ここでは、個人的によく使うmatplotlibのtipsをまとめます。

基本

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [2, 4, 3, 8]
plt.plot(x, y)

plt.title('Title')
plt.xlabel('X label')
plt.ylabel('Y label')

plt.show()
最初の1行はおまじないです。
  • plotメソッド: x軸とy軸の値を指定します。
  • titleメソッド: グラフのタイトルを指定します。
  • xlabelメソッド: x軸の名前を指定します。
  • ylabelメソッド: y軸の名前を指定します。
  • showメソッド: グラフを表示します。

x軸とy軸の範囲

x軸とy軸の範囲を指定するには、xlimメソッドとylimメソッドをつかいます。
import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [2, 4, 3, 8]
plt.plot(x, y)

plt.title('Title')
plt.xlabel('X label')
plt.ylabel('Y label')

plt.xlim([0,5])
plt.ylim([0,10])

plt.show()
上の例では、x軸の最小値を0、最大値を5に指定しています。 また、x軸の最小値を0、最大値を10に指定しています。

複数の系列の描画

複数の系列を描画する例を示します。
import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
value1 = [2, 4, 3, 8]
value2 = [5, 2, 7, 6]
plt.plot(x, value1, label='value1')
plt.plot(x, value2, label='value2')

plt.title('Title')
plt.xlabel('X label')
plt.ylabel('Y label')
plt.legend()

plt.show()
plotメソッドを複数回実行すればよいです。 凡例を表示したいので、plotメソッドの引数でlabelを指定します。 showメソッドを呼ぶ前に、legendメソッドを実行しておくと、凡例が表示されます。

凡例の位置

凡例の位置を調整する方法です。
import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
value1 = [2, 4, 3, 8]
value2 = [5, 2, 7, 6]
plt.plot(x, value1, label='value1')
plt.plot(x, value2, label='value2')

plt.title('Title')
plt.xlabel('X label')
plt.ylabel('Y label')
plt.legend(loc='upper left')
#plt.legend(loc='lower left')
#plt.legend(loc='lower right')

plt.show()
legendメソッドの引数として、凡例の場所を指定します。 loc='upper left'と指定すると、左上になります。 左下がよければ'lower left'、右下がよければ'lower right'と指定します。

凡例の半透明化

凡例の位置を調節しても、どうしてもプロットと重なってしまう場合があります。 その場合は、半透明化すると見やすくなるかもしれません。
leg = plt.legend()
leg.get_frame().set_alpha(0.5)
実はlegendメソッドは、legendオブジェクトを返します。 それを変数に格納して、get_frameからset_alphaを呼べば半透明化できます。

点をプロットする方法

線ではなく、点を描画する方法を紹介します。
import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [2, 4, 3, 8]
plt.plot(x, y, 'o')
#plt.plot(x, y, '.') # small points
#plt.plot(x, y, '+')
#plt.plot(x, y, 'x')
#plt.plot(x, y, '*')

plt.title('Title')
plt.xlabel('X label')
plt.ylabel('Y label')

plt.xlim([0,5])
plt.ylim([0,10])

plt.show()
plotメソッドはデフォルトで線を引きます。 上の例のようにすると、点を描画してくれます。 点の種類はいくつかあります(+やxなど)。

線と点の描画

今度は、線と点を両方描画する方法です。
import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [2, 4, 3, 8]
plt.plot(x, y, marker='+')
#plt.plot(x, y, marker='o')
#plt.plot(x, y, marker='x')
#plt.plot(x, y, marker='*')

plt.title('Title')
plt.xlabel('X label')
plt.ylabel('Y label')

plt.xlim([0,5])
plt.ylim([0,10])

plt.show()
plotメソッドでmarkerを指定すれば、線と点を描画してくれます。

系列の色

系列の色を指定する方法です。 以下のように、plotメソッドを呼ぶときにcolorを指定します。
  plt.plot(x, y, color='r')
以下の色があります。
  • b: 青
  • g: 緑
  • r: 赤
  • c: シアン
  • m: マゼンタ
  • y: 黄
  • k: 黒
  • w: 白

2つのY軸の使用

Y軸を2つ使用する方法です。
fig, axis1 = plt.subplots()
axis2 = axis1.twinx()

axis1.set_ylabel('y1')
axis2.set_ylabel('y2')

axis1.plot(x, y1values, marker='+', label='y1 value')
axis1.legend(loc='upper left')

axis2.plot(x, y2values, '.', label='y2 value', color='r')
axis2.legend()

plt.show()

subplotsメソッドの「2つ目の返り値(axis1)」は、左側のY軸です。さらにtwinxメソッドを呼ぶことで、右側のY軸を取得できます。あとは、それぞれでplotメソッドを実行すればOKです。

凡例を表示する場合も、axis1とaxis2のそれぞれでlegendメソッドを呼びます。ただし、表示場所を指定しないと、どちらも右上に表示されてしまい、重なって見えなくなるので注意が必要です。

グリッド(格子)の表示

グリッドを表示する方法を紹介します。
import matplotlib.pyplot as plt

 :

plt.grid()
plt.show()
このように、showメソッドを呼ぶ前に、gridメソッドを呼ぶだけです。 色を指定したければ、以下のようにします。
plt.grid(color='r')
スタイルを指定したい場合は、以下のように指定します。
plt.grid(color='r', linestyle='-')
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system