我有一个包含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')
答案 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, '--')