matplotlibを使う

matplotlibはpythonでグラフを描くためのライブラリです。numpyなどと組み合わせると簡易matlabのような環境を整えることができます。

インストール

公式サイト→http://matplotlib.sourceforge.net/index.html
matplotlib 0.99.1 is available for downloadのところからダウンロードできます。Windows用の簡易インストーラmatplotlib-0.99.1.win32-py2.6.exeをダウンロードします。インストールはこれで簡単にできます。

グラフを描く

plotコマンドでプロットする点のxy座標を定めます。下の例では、x=0,1,2,y=2,3,4のグラフを、x軸0-5,y軸0-8の範囲で描画します。grid()メソッドでグリッドを表示することができます。

import matplotlib.pyplot as plt
plt.plot([0,1,2][2,3,4])
plt.axis([0,5,0,8])
plt.grid()
plt.title('sample')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

Arrayによる入力

numpyをインポートし、arrayを生成してプロットすることもできます。

from matplotlib.pyplot import*
from numpy import *
x = arange(0., 7., 0.1) #form 0.0 to 7.0, interval = 0.1
plot(x,cos(x))
show()

プロットのデザイン

点の形を指定するには、'--','^','s'などを引数に指定します。

import matplotlib.pyplot as plt
import numpy
t = numpy.arange(0., 5., 1.)
plt.plot(t, t/3,        #line
         t, t/2,'--'    #dotted line
         ,t, t*1, '^'   #triangle
         ,t, t*1.5, 'v' #triangle
         , t, t*2, '<'  #triangle
         , t, t*2.5, '>'#triangle        
         ,t, t*3, 's'   #square
         , t, t*3.5, 'd'#square(dice)
         , t, t*4, 'p'  #pentagon
         , t, t*5, 'h'  #hexagon
         , t, t*6, 'o'  #circle
         , t, t*7, '+'  #cross
         , t, t*8, '*'  #star
         , t, t*9, 'x'  #cross
         , t, t*10, '.' #big dot
         , t, t*11, ',' #small dot
         )
plt.show()

色を設定するには、'r','g','b'などの接頭辞を付けます。

import matplotlib.pyplot as plt
import numpy
t = numpy.arange(0., 5., 1.)
plt.plot(t, t*2, 'r--'    #red line
         ,t, t*3,'g--'    #green
         ,t, t*4, 'b--'   #blue
         ,t, t*5, 'y--'   #yellow
         ,t, t*6, 'c--'   #cyan       
         ,t, t*7, 'm--'   #magenta
         ,t, t*8, 'w--'   #white
         ,t, t*9, 'k--'   #black
         )
plt.show()

線のカスタマイズ

plotメソッドの引数に直接指定すると下のようになります。

plt.plot(t, t*2,color = '#cccfff', linewidth=3)

plotが返すlineインスタンスのsetupメソッドにより指定する方法もあります。

import matplotlib.pyplot as plt
import numpy
t = numpy.arange(0., 5., 1.)
plt.grid()
#lines = plt.plot(t, t*2,color = '#cccfff', linewidth=3)
plt.setp(lines, color='#cccfff', linewidth=2.0)
plt.setp(lines, 'color', 'r', 'linewidth', 3.0)
plt.show()

複数のグラフを表示する

別のウインドウで複数のグラフを表示するには、figure(番号)と記述します。同じfigure内で複数のグラフを描きたい場合は、subplotメソッドを使います。描画領域の行数,描画領域の列数,グラフ番号を3ケタの数にして引数にします。例えば2*2の領域のうち3つ目の領域に描くなら、plt.subplot(223)で現在のグラフの位置を指定してplotを呼び出すとよいです。

import numpy as np
import matplotlib.pyplot as plt
x1 = np.arange(0.0, 2*np.pi, 0.1)
x2 = np.arange(0.0, 2*np.pi, 0.1)

plt.figure(1)
plt.subplot(221)
plt.plot(x1, np.sin(x1), 'r--', x2, np.sin(x2), 'k')
plt.subplot(224)
plt.plot(x2, np.sin(2*np.pi*x2), 'r--')

plt.figure(2)
plt.plot(x1, np.cos(x1), 'r--')

plt.show()