Python numpy.poly1d绘制多条线

Python numpy.poly1d绘制多条线,python,numpy,matplotlib,Python,Numpy,Matplotlib,我试图绘制一些简单的数据图,并显示多项式回归线,似乎我在按照 然而,我得到的不仅仅是一句话: Matplotlib的绘图方法按照提供的顺序连接您提供的(x,poly(x))点。您的数组x似乎未排序,这使得绘图多次向左和向右移动。打印前对其进行排序,例如: x = np.array([1,7,2,6,3,5,4]) y = np.array([1,3,2,4,3,5,4]) poly=np.poly1d(np.polyfit(x, y, 2)) plt.scatter(x,y) sorted =

我试图绘制一些简单的数据图,并显示多项式回归线,似乎我在按照

然而,我得到的不仅仅是一句话:
Matplotlib的
绘图
方法按照提供的顺序连接您提供的(x,poly(x))点。您的数组x似乎未排序,这使得绘图多次向左和向右移动。打印前对其进行排序,例如:

x = np.array([1,7,2,6,3,5,4])
y = np.array([1,3,2,4,3,5,4])
poly=np.poly1d(np.polyfit(x, y, 2))
plt.scatter(x,y)
sorted = np.sort(x)
plt.plot(sorted, poly(sorted))
plt.show()

通常不会出现这种情况,因为拟合模型不是根据点绘制的(这可以生成上面显示的粗略图),而是根据更精细的
linspace
,这可以生成更平滑的图。那么排序就不是问题了

xx = np.linspace(x.min(), x.max(), 500)
plt.plot(xx, poly(xx))
plt.show()

x.shape==(397,)
y.shape==(397,)
谢谢你,现在你指出了它,我知道它在做什么。我扩展了答案,添加了排序的替代方法。
xx = np.linspace(x.min(), x.max(), 500)
plt.plot(xx, poly(xx))
plt.show()