【问题标题】:plotting polynomial regression in same plot as the real data在与真实数据相同的图中绘制多项式回归
【发布时间】:2013-10-12 01:14:16
【问题描述】:

我有一些读取两个 csv 的代码 sn-ps 并使用 matplotlib.pyplot 绘制它们并对相同的两个 csv 执行多项式回归。我想要做的是将数据和我的多项式回归绘制在同一张图上。

import matplotlib.pyplot as plt
import csv
import numpy as np

datax=np.genfromtxt('Delta R.csv')
datay=np.genfromtxt('Example R.csv')


plt.title ('Test graph ')
plt.xlabel('x axis')
plt.ylabel('y axis ')

plt.plot(datax, datay,'o-')

plt.show()

我的第二段代码只执行多项式回归

import matplotlib.pyplot as plt
import csv
import numpy as np

datax=np.genfromtxt('Delta R.csv')
datay=np.genfromtxt('Example R.csv')

z = np.polyfit(datax,datay,5) 

print z

谁能帮我将这个五阶多项式回归的结果绘制在与原始数据相同的图中。谢谢 GTPE

编辑

tcaswell 提供的代码完美运行。我唯一的问题是为什么多项式在某些地方会出现如此角度。这是我的示例图片:

【问题讨论】:

  • 我无法让 Stackoverflow 直接允许我的图片进入。

标签: csv python-2.7 numpy matplotlib


【解决方案1】:

再次拨打plot

datax=np.genfromtxt('Delta R.csv')
datay=np.genfromtxt('Example R.csv')

z = np.polyfit(datax,datay,5) 
p = np.poly1d(z)

plt.title ('Test graph ')
plt.xlabel('x axis')
plt.ylabel('y axis ')

plt.plot(datax, datay,'o-')
plt.plot(datax, p(datax), '-')

datax_os = np.linspace(np.min(datax), np.max(datax), 1024)
plt.plot(datax_os, f(datax_os)) # 'smoother' line

plt.show()

可以在np.polyfit 中看到对plot 使用多个参数的替代方法 文档。

【讨论】:

  • 我对绘制多项式的唯一问题是为什么它在某些地方看起来如此有棱角?我假设多项式拟合是平滑的。我会在我的问题中添加一张图片以供参考。
  • @GTPE plot 的工作方式是用直线连接您的点。如果您想要看起来更平滑的曲线,请绘制更多点。
  • 哦,我明白了,它只绘制所提供数据的回归。多项式方程定义的关系仍然是平滑的:)
猜你喜欢
  • 1970-01-01
  • 2023-01-17
  • 2022-01-21
  • 2020-05-08
  • 2016-06-10
  • 2014-06-13
  • 2020-09-08
相关资源
最近更新 更多