为实验数据绘制平滑曲线Python

问题描述

我有一个实验数据,该实验是使用plt.plotplt.scatter绘制的。该图以点到点的直线表示。

如何为数据绘制平滑曲线。我以前在线性和二次方程式中使用过curve_fit,但是想不出一种将数据拟合到多项式的方法

我的代码是:

prob = scatter_prob(ip1,ips1,is1,iss1)
plt.plot(voltage1,prob)
plt.xlabel('Voltage (V)')
plt.ylabel('Probability of Electron Scattering')
plt.title('Graph of Voltage vs. Probability')
plt.scatter(voltage1,prob)
plt.annotate('Minimum Probability P = ' + str(probmin),xy = (vmin,probmin),xytext = (vmin +1,arrowprops=dict(facecolor='yellow',shrink = 0.05))
plt.grid(True)
plt.tight_layout()
plt.show()

和我收到的图的图像在这里

plot

prob,voltage1,ip1,is1,ips1和iss1是numpy数组。 scatter_prob返回

1 - ((Ip1 * Iss1)/(Ips1 * Is1))

解决方法

使曲线平滑的最佳方法是使用Savitzky-Golay滤波器。这是一个不错的示例here