在与真实数据相同的图中绘制多项式回归 [英] plotting polynomial regression in same plot as the real data
问题描述
我有一些代码片段,可读取两个csv并使用matplotlib.pyplot对其进行绘制,并在相同的两个csv上执行多项式回归.我想要做的是在同一张图上同时绘制数据和多项式回归.
I have some snippets of code that read two csvs and plot them using matplotlib.pyplot and perform polynomial regression on the same two csvs. What I want to be able to do is plot both the data and my polynomial regression on the same graph.
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()
第二段代码只是执行多项式回归
and my second piece of code performs simply polynomial regression
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
任何人都可以帮助我在与原始数据相同的图中绘制此5阶polynomail回归的结果.谢谢GTPE
Can anybody help me plot the results of this 5th order polynomail regression in the same plot as the original data. Thanks GTPE
修改
tcaswell提供的代码非常有效.我唯一的问题是为什么多项式在某些地方这么有角度.这是我的示例图片:
Code provided by tcaswell works perfectly. My only question is why does the polynomial come out so angular in places. Here is my example image:
推荐答案
只需再次调用 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()
An alternate method using multiple arguements to plot
can be seen in the np.polyfit
documentation.
这篇关于在与真实数据相同的图中绘制多项式回归的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!