我正在尝试制作一个简单的散点图并覆盖一个简单的回归。无论如何,所有x,y点都以散射形式绘制,如预期的那样。大。我的问题是,如果N> 127,则绘制所有(x,y)点,但回归线不会从min(x)延伸到max(x)。回归线应该从左侧(到min(x))一直延伸到max(x)。这里发生了什么,我该如何解决?
fig1, ax1 = plt.subplots(1,1)
N=128
x=np.random.rand(N)
y=np.random.rand(N)
fit = np.polyfit(x,y,1)
fit_fn = np.poly1d(fit)
ya=fit_fn(x)
ax1.plot(x,y, 'bo',x, ya,'-k')
我注意到如果我将最后一行更改为
ax1.plot(x,y, 'bo',x, ya,'-ko')
然后所有点都会绘制,但这不是我想要的,因为这给了我一个x,ya而不是一条线的散点图。
答案 0 :(得分:1)
我现在明白了。我不太确定为什么会发生这种情况,但有一种解决方法。这会产生相同的结果吗? (见下文)
import matplotlib.pyplot as plt
import numpy as np
fig1, ax1 = plt.subplots(1,1)
#distribute N random points in interval [0,1>
N=300
x=np.random.rand(N)
y=np.random.rand(N)
#get fit information
fit = np.polyfit(x,y,1)
fit_fn = np.poly1d(fit)
#extend fitted line interval to make sure you
#get min and max on x axis
current = np.arange(min(x), max(x), 0.01)
current_fit = np.polyval(fit_fn, current)
#you can extend it even, default is color blue
future = np.arange(min(x)-0.5, max(x)+0.5, 0.01)
future_fit = np.polyval(fit_fn, future)
#plot
ax1.plot(x,y, 'bo')
ax1.plot(current, current_fit, "-ko")
ax1.plot(future, future_fit)
plt.show()