尝试在绘图上显示线性回归结果

问题描述 投票:0回答:1

我不知道为什么简单的事情用Python会变得非常困难。很抱歉这个负面介绍,但我试图向一位同事展示 python 比 Excel 工作得更好,到目前为止,我花了很多时间来调试和找出我可能放弃的东西。这是我放弃之前最后的希望。我有一组数据正在进行线性回归,并希望显示这样的函数:

enter image description here


plt.figure('example')
slope, intercept, r, p, std_err = stats.linregress(values1, values3)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, values1))

plt.scatter(values1, values3)
#plt.plot(values1, mymodel)
#plt.axline([xy1=(0, intercept), slope=slope, label=f'$y = {slope:.1f}x {intercept:+.1f}$'])
#plt.plot(values1, mymodel, 'r', label='y={:.2f}x+{:.2f}'.format(slope,intercept))
plt.plot(values1, mymodel, 'r', label='y={:.2f}x+{:.2f}'.format(slope,intercept))

#plt.axline(xy1, kwargs)

plt.axline
plt.xlabel('time [hh:mm]')
plt.ylabel(desired_value1)
#plt.axline(xy1=(0, intercept), slope=slope, label=f'$y = {slope:.1f}x {intercept:+.1f}$')
plt.show()

我正在使用 Spyder。结果如附图所示。

enter image description here

有人可以帮我弄清楚为什么我无法显示该功能吗?所有注释掉的代码都是我尝试过的。

python matplotlib regression
1个回答
0
投票

我的答案基于最近的答案这里

plt.figure()
plt.plot(df["Datetime"], df["Data"])
plt.scatter(xMid, yMid, marker = "x", color = "red")
fit = np.polyfit(xIdx, yMid, 1) # fit
slope, intercept = fit.ravel()
plt.plot(df["Datetime"], np.polyval(fit, df["Datetime"].index), "k--") # plot fit
locator = mdates.AutoDateLocator(minticks = 3, maxticks = 7)
formatter = mdates.ConciseDateFormatter(locator)
plt.gca().xaxis.set_major_locator(locator)
plt.gca().xaxis.set_major_formatter(formatter)
plt.legend(["Raw", "Jumps", f"y={round(slope,1)}x+{round(intercept,1)}"],
          frameon = False)
plt.grid()

这会导致以下结果:

Plot

您缺少的是对图例的调用以及必要的调整。更多房源请查看这里

© www.soinside.com 2019 - 2024. All rights reserved.