我正在使用一个函数来绘制来自两个数据帧的各种光源的光照曲线。我想写一个循环,通过数据帧中的每条光照曲线,绘制出好的光照曲线。该函数的工作原理是在同一绘图上绘制两条曲线,每个数据帧绘制一条曲线。我需要循环来计算其中一条曲线(LSST曲线)的数据点,并消除少于5个点的绘图。所有的命中图都有足够的数据点,但是LSST图已经应用了过滤器。我对Python还比较陌生,所以我对如何进行这项工作感到非常困惑。所讨论的功能如下:
def plotLsstHitsLightCurve(obj, srcTable, row, lcPath='random file path'):
plt.figure(figsize=(10,8))
# Plot LSST curve
srcRowFilter = (srcTable['diaObjectId'] == obj)
srcRow = srcTable.loc[srcRowFilter]
plt.errorbar(srcRow['midPointTai'], srcRow['magCol'],yerr=srcRow['magErrCol'],ls=':', marker='o', label='LSST')
# PLot HiTS Curve
tok = row['internalID'].split('_')
field = '_'.join([tok[0],tok[1]])
ccd = tok[2]
lightcurveFile = field + '_' + ccd + '_LC_50.tar.gz'
tarball = tarfile.open(os.path.join(lcPath,field,ccd,lightcurveFile))
data = tarball.extractfile(str(row['internalID'])+ '_g.dat')
dfl = pd.read_csv(data,sep='\t') # lead a file with a light curve data into a pandas dataframe
plt.errorbar(dfl.MJD,dfl.MAG_AP1,dfl.MAGERR_AP1, marker='o',linestyle=':', label='HiTS')
obj = goodObj.iloc[idx[2]]['diaObjectId']
row = hitsDf.iloc[2]
enter code here
enter code here
目前没有回答
相关问题 更多 >
编程相关推荐