Python > matplotlibによるグラフ描画
更新日
2014-11-02
広告
matplotlibを使うと、gnuplotのようなグラフを作成できます。
ここでは、個人的によく使うmatplotlibのtipsをまとめます。
最初の1行はおまじないです。
上の例では、x軸の最小値を0、最大値を5に指定しています。
また、x軸の最小値を0、最大値を10に指定しています。
plotメソッドを複数回実行すればよいです。
凡例を表示したいので、plotメソッドの引数でlabelを指定します。
showメソッドを呼ぶ前に、legendメソッドを実行しておくと、凡例が表示されます。
legendメソッドの引数として、凡例の場所を指定します。
loc='upper left'と指定すると、左上になります。
左下がよければ'lower left'、右下がよければ'lower right'と指定します。
plotメソッドはデフォルトで線を引きます。
上の例のようにすると、点を描画してくれます。
点の種類はいくつかあります(+やxなど)。
plotメソッドでmarkerを指定すれば、線と点を描画してくれます。
基本
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()
- 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()
複数の系列の描画
複数の系列を描画する例を示します。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()
凡例の位置
凡例の位置を調整する方法です。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()
凡例の半透明化
凡例の位置を調節しても、どうしてもプロットと重なってしまう場合があります。 その場合は、半透明化すると見やすくなるかもしれません。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()
線と点の描画
今度は、線と点を両方描画する方法です。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メソッドを呼ぶときに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 まで。