在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)
我明白了:
在做基本情节的同时,我得到连线,但重叠的线
plt.plot(x, y, '-o')
plt.show()
我想拥有什么:
相关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')
这是我现在得到的,但我正在寻找更顺畅的东西。
答案 0 :(得分:1)
为了让plt.plot(x, y, '-o')
起作用,您需要在x中对数据进行排序,以使该行不会脱节。你可以这样做:
[x, y] = zip(*sorted(zip(x, y), key=lambda x: x[0]))
这将对两个数据进行排序,以x为关键。