つれづれなる備忘録

日々の発見をあるがままに綴る

SymPyの使い方20 ~ plottingモジュール

 今回からSymPyのplottingモジュールを用いたplotの方法について紹介する。今回は簡単な2次元のプロットについて紹介する。

1. plottingモジュール

 Python上でのplotではmatplotを利用するのが一般的だが、シンボルの状態から数値評価を実行してNumpy arrayとしてデータを作成する必要がある。一方でSymPyのplottingモジュールではMathematicaのようにシンボルの状態でプロットを実行することができる。プロットの種類は2次元、3次元、パラメトリックプロット(2D/3D)が実行できる。

plottingモジュールを利用するには以下のようにimportする。

from sympy.plotting import plot

最も単純にプロットを実行するにはplot(関数)とする。例えばシンボルxを定義すれば、plotコマンドでプロットすることができる。

x=symbols('x')
plot(x**2)

"基本的なプロット"
基本的なプロット

複数プロットを表示するには、plot(関数1,関数2)としてplot内に複数の関数を記述する。

plot(x,x**2)

"複数プロット"
複数プロット

2. プロットの書式

 プロット範囲を指定するにはplot(関数,(x,最小値,最大値))とする。例えば

plot(x,x**2,(x,-5,5))

"プロット計算範囲の指定"
プロット計算範囲の指定

別々に範囲を指定したい場合は

plot((x,(x,-10,10)),(x**2,(x,-5,5)))

"別々にプロット範囲を指定"
別々にプロット範囲を指定

なおyの範囲を指定したい場合はylim=(最小値,最大値)を用いて

plot(x,x**2,ylim=(0,5))

"yのプロット範囲を指定"
yのプロット範囲を指定

プロットの線種、例えば色をそれぞれ割り当てるにはplot関数に返り値を設定した上で、片方の返り値p1にp2を追加して.show()で表示する。 それぞれのplot関数は最初は非表示(show=False)として、線の色はline_colorを用いて設定する。

p1=plot(x,(x,-20,20),show=False,line_color='b')
p2=plot(x**2,(x,-5,5),show=False,line_color='r')
p1.append(p2[0])
p1.show()

"線色の設定"
線色の設定

最後にSymPy関数としてexp,cosをimportして、タイトルや軸名それぞれ線色、凡例を入れたプロット例を以下に示す。

p1=plot(exp(-x),(x,-2,2),show=False,line_color='b',title='Test Fuctions',ylabel='y',label='exp(-x)',legend=True)
p2=plot(cos(x),(x,-5,5),show=False,line_color='r',label='cos(x)',legend=True)
p1.append(p2[0])
p1.show()

"タイトル、軸名、凡例付きプロット"
タイトル、軸名、凡例付きプロット

3. まとめ

 SymPyのplottingモジュールを用いたplotの方法のうち今回は簡単な2次元のプロットについて紹介した。