概要
レポートの作成などで得られた関数をグラフに表したいことは非常に多い。ここではフィッティングなどの場面で用いられるローレンツ関数を例としてpythonでグラフを描画し保存する方法を解説する
環境
PC:windows10(64bit)
python3.6.8
matplotlib2.2.0
numpy1.16.0
jupyter notebook1.1.0
ライブラリのインストールはpipにより行っている。
pip install jupyter notebook
pip install numpy
pip install matplotlib
理論
ローレンツ関数は以下の式で表される。
f(x) = y0 + \frac{1}{\pi} \frac{\omega}{(x-x0)^2 + \omega^2}
関数の定数としてω,x0,y0を含む。
関数の概形は下の結果を参照していただきたい。x = x0で極大値をとる。
コード
それではpython でローレンツ関数を描画していく。
コードは以下の通りである。
import pylab as plt
import numpy as np
xmin=-5; xmax=5; npoints=100
delta=(xmax-xmin)/npoints
w=2; x0=0; y0=0
x=np.arange(xmin,xmax,delta)
y=y0+(1/np.pi)*(w/(((x-x0)**2)+w**2))
plt.plot(x,y,'r',lw=2)
plt.xlabel("x")
plt.ylabel("f(x)")
plt.title("lorentz function")
plt.grid(True)
plt.savefig('figure.png')
plt.show()
pylabとnumpyをインポート
import pylab as plt
import numpy as np
定義域(xmin,xmax)とデータ点の数(npoints)を指定する
xmin=-5; xmax=5; npoints=100
delta=(xmax-xmin)/npoints
定義域、データ点が決まるとデータ点の間隔δも決定する。
関数内の定数を指定
w=2; x0=0; y0=0
これで関数を描画するために必要な情報が揃う。
関数の定義
x=np.arange(xmin,xmax,delta)
y=y0+(1/np.pi)*(w/(((x-x0)**2)+w**2))
ローレンツ関数を定義する
xはx軸の配列でyは各xの値に対応するyの値を決定する。
関数の描画とグラフの保存
plt.plot(x,y,'r',lw=2)
plt.xlabel("x")
plt.ylabel("f(x)")
plt.title("lorentz function")
plt.grid(True)
plt.savefig('figure.png')
plt.show()
plot()でデータ点の指定と線の色('r')と線幅(lw=2)を決める
savefig()でグラフを保存する
show()でjupyter notebook内にグラフを表示する
結果
実行結果は以下の通りである。
.pngファイルとして保存したグラフを示している
まとめ
ローレンツ関数を例としてpythonで関数を描画する方法を解説した。
適宜描画したい関数に合わせてコードを変更すればよい