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