用PyPlot绘制平滑线
我有以下简单的脚本绘制图表:
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有没有简单的方法来做到这一点? 我find了一些教程,但它们都显得相当复杂。
你可以使用scipy.interpolate.spline
来自己平滑你的数据:
from scipy.interpolate import spline xnew = np.linspace(T.min(),T.max(),300) #300 represents number of points to make between T.min and T.max power_smooth = spline(T,power,xnew) plt.plot(xnew,power_smooth) plt.show()
之前:
后:
我认为你的意思是曲线拟合,而不是从你的问题的上下文反锯齿 。 PyPlot没有任何内置的支持,但是你可以很容易地实现一些基本的曲线拟合,就像这里看到的代码,或者如果你使用的是GuiQwt,它有一个曲线拟合模块 。 (你也可以从SciPy窃取代码来做到这一点)。