from astropy.table import Table
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime,timedelta,date
pd.set_option('display.max_columns',None)
"""
费米卫星每列数据
START:从2001年1月1日00时00分00秒开始到此刻的总秒数,不算闰秒
STOP:
"""
class FermiPlot():
def __init__(self,fitsName):
self.fitsName=fitsName
self.data=Table.read(self.fitsName).to_pandas()
print(self.data.columns)
print(self.data)
self.data["START"]=self.data["START"].apply(self.modifiedJulianDay)
print(self.data)
def plotFermi(self):
data=self.data
fig,ax=plt.subplots(figsize=(10,5))
yInterval=plt.MultipleLocator(5*10**(-7))
ax.yaxis.set_major_locator(yInterval)
ax.set_ylim((0,3*10**(-6)))
ax.scatter(data['START'],data['FLUX_100_300000'])
ax.set_xlim((54000,60000))
ax.errorbar(data['START'],data['FLUX_100_300000']
,yerr=data['ERROR_100_300000']
,fmt="o"
# ,mec='black'
# ,mfc='black'
# ,ecolor='black'
)
plt.show()
def modifiedJulianDay(self,fermiTime):
"""
将一个费米时间转换为修正儒略历日
:修正儒略历MJD是从1858年11月17日开始的一共的天数.
Fermi的时间是从2001年1月1日0点开始的一共的秒数.
一天一共86400秒,从Fermi数据可以看出,每一行停止时间都比开始时间差86400秒,也就是都是一整天的数据.
输入一个费米时间,算出他是费米的第几天,加上费米开始到MJD开始的天数就是这个费米时间的MJD
"""
startMjd=datetime(year=1858,month=11,day=17,hour=0,minute=0,second=0)
startFermi=datetime(year=2001,month=1,day=1,hour=0,minute=0,second=0)
deltaMjdFermiDays=(startFermi-startMjd).days#MJD开始到Fermi开始的总共的天数
fermiTimeDays=timedelta(seconds=fermiTime).days#所输入Fermi时间的天数
return fermiTimeDays+deltaMjdFermiDays
if __name__=="__main__":
FermiPlot('0954_658.fits').plotFermi()
画费米卫星光变曲线
最新推荐文章于 2024-05-15 22:12:36 发布