我有一个简单的脚本来绘制一个图表:
将matplotlib.pyplot导入为plt
将numpy作为np导入
T=np.数组([6,7,8,9,10,11,12])
功率=np.阵列([1.53E+03,5.92E+02,2.04E+02,7.24E+01,2.72E+01,1.10E+01,4.70E+00])
plt.绘图(T,功率)
plt.show()
现在,这条线从一点到另一点是直线,看起来还可以,但在我看来可能更好。我想要的是平滑点之间的线。在Gnuplot中,我会用平滑的cplines绘制
在PyPlot中有没有一种简单的方法可以做到这一点?我找到了一些教程,但它们看起来都很复杂
您可以使用scipy.interpolate.spline自行平滑数据:
来自scipy.interpolate导入样条线的
#300表示在T.min和T.max之间进行的点数
xnew=np.linspace(T.min(),T.max(),300)
幂_平滑=样条曲线(T,幂,xnew)
plt.绘图(新,功率平滑)
plt.show()
scipy 0.19.0中不推荐使用样条曲线,请改用BSpline类
从spline切换到BSpline不是一个简单的复制/粘贴过程,需要进行一些调整:
来自scipy.interpolate的
导入生成插值样条曲线,BSpline
#300表示在T.min和T.max之间进行的点数
xnew=np.linspace(T.min(),T.max(),300)
spl=生成插值样条曲线(T,幂,k=3)#类型:BSpline
功率平滑=spl(xnew)
plt.绘图(新,功率平滑)
plt.show()
之前:
之后: