如何在python中拟合并绘制线性回归线?

时间:2018-05-10 20:02:00

标签: python-2.7 data-fitting

我有一个包含x,y和y-err的文件,我只想在这些数据上插入一条直线。

这是我原始的代码,我正在绘制数据。基于此我想要符合直线:

import numpy as np
import matplotlib.pyplot as plt

#read the data file
Data = np.loadtxt('dmvals.dat')    
MJD = Data[:,0]    
DM = Data[:,1]    
DM_err = Data[:,2]    
font = {'family': 'serif',
        'color':  'blue',
        'weight': 'normal',
        'size': 14,
        }

plt.figure()    
plt.xlabel('time[MJD]', fontdict=font)    
plt.ylabel('DM[pc/cm^3]', fontdict=font)    
plt.title('DM values', fontdict=font)    
plt.errorbar(MJD, DM, DM_err,color='magenta')    
plt.subplots_adjust(left=0.15 , hspace = 0.5)    
plt.savefig('dm_variations_plot.png')

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用numpy.polyfit来拟合第一级polinoomial:

p = numpy.polyfit(MJD, DM, deg=1)

p将是一个包含截距和拟合线斜率的列表

然后,您可以使用

在数据上绘制线条
x = MJD
y = p[1] + p[0] * MJD
plt.plot(x, y, '--')