グラフをプロットする次の簡単なスクリプトがあります。
import matplotlib.pyplot as plt
import numpy as np
T = np.array([6, 7, 8, 9, 10, 11, 12])
power = np.array([1.53E+03, 5.92E+02, 2.04E+02, 7.24E+01, 2.72E+01, 1.10E+01, 4.70E+00])
plt.plot(T,power)
plt.show()
現状では、線は点から点まで真っ直ぐ伸びており、見た目は問題ありませんが、私の意見としては、もっと改善できると思います。私が望んでいるのは、点間の線を滑らかにすることです。Gnuplot では、 を使用してプロットしますsmooth cplines
。
PyPlot でこれを行う簡単な方法はありますか? チュートリアルをいくつか見つけましたが、どれもかなり複雑そうです。
ベストアンサー1
scipy.interpolate.spline
データを自分で平滑化するには、次の方法を使用できます。
from scipy.interpolate import spline
# 300 represents number of points to make between T.min and T.max
xnew = np.linspace(T.min(), T.max(), 300)
power_smooth = spline(T, power, xnew)
plt.plot(xnew,power_smooth)
plt.show()
spline は scipy 0.19.0 では非推奨です。代わりに BSpline クラスを使用してください。
spline
からへの切り替えはBSpline
単純なコピー/貼り付けではなく、少し調整が必要です。
from scipy.interpolate import make_interp_spline, BSpline
# 300 represents number of points to make between T.min and T.max
xnew = np.linspace(T.min(), T.max(), 300)
spl = make_interp_spline(T, power, k=3) # type: BSpline
power_smooth = spl(xnew)
plt.plot(xnew, power_smooth)
plt.show()