Matplotlib中的散点图及其自然线

时间:2014-04-01 09:20:44

标签: python-2.7 matplotlib plot

在matplotlib中加入scatterplot给出的点时,我只想得到自然拟合,而不是x-y,它变成锯齿形,如下所示。

我怎样才能在matpotlib中这样做?

PS:我不想拟合多项式/回归线,只需要常规自然线

from pylab import *
import matplotlib.pyplot as plt

//Generate some x-y data for yourself...
x=[key for key in my_dict.keys()]
y=[imp for imp in my_dict.values()]
xlim([min(x),max(x)])
ylim([min(y),max(y)])
plt.scatter(x,y)

我明白了:

enter image description here

在做基本情节的同时,我得到连线,但重叠的线

plt.plot(x, y, '-o')
plt.show()

enter image description here

我想拥有什么:

enter image description here

相关q/a但不完全适合我的情况

后备替代方案 - 在此处拟合第n次多项式 - Multivariate (polynomial) best fit curve in python?

修改 - 我按照建议尝试了以下代码

[x, y] = zip(*sorted(zip(x, y), key=lambda x: x[0])) ###
plt.plot(x, y, '-o') 

这是我现在得到的,但我正在寻找更顺畅的东西。

enter image description here

1 个答案:

答案 0 :(得分:1)

为了让plt.plot(x, y, '-o')起作用,您需要在x中对数据进行排序,以使该行不会脱节。你可以这样做:

[x, y] = zip(*sorted(zip(x, y), key=lambda x: x[0]))

这将对两个数据进行排序,以x为关键。