I am trying to loop code over several FITS files to overlay several plots. At the moment I am only getting one graph (see pic) Ideally I would like to loop through several FITS that are in a folder on my Desktop. this is what I have so far. Im thinking that I will need to define a function to be able to do this. import numpy as np import matplotlib.pyplot as plt from astropy.io import fits from astropy.wcs import WCS from mpl_interactions import ioff, panhandler, zoom_factory %matplotlib widget spec_list = ['~/Desktop/r.HARPN.2018-01-18T14:25:36.145_CCF_A.fits', '~/Desktop/r.HARPN.2018-01-18T14:20:10.645_CCF_A.fits', '~/Desktop/r.HARPN.2018-01-18T14:31:00.875_CCF_A.fits', '~/Desktop/r.HARPN.2018-01-18T14:36:26.373_CCF_A.fits'] for i in spec_list: hdul = fits.open(i) data = hdul[1].data h1 = hdul[1].header flux = data[1] w = WCS(h1, naxis=1, relax=False, fix=False) lam = w.wcs_pix2world(np.arange(len(flux)), 0)[0] plt.figure(figsize=(5,5)) plt.plot(lam, flux) plt.ylim(0, ) plt.xlabel('RV') plt.ylabel('Normalized CCF') plt.show()
Greetings
I am trying to loop code over several FITS files to overlay several plots. At the moment I am only getting one graph (see pic)
Ideally I would like to loop through several FITS that are in a folder on my Desktop.
this is what I have so far. Im thinking that I will need to define a function to be able to do this.
import numpy as np
import matplotlib.pyplot as plt
from astropy.io import fits
from astropy.wcs import WCS
from mpl_interactions import ioff, panhandler, zoom_factory
%matplotlib widget
spec_list = ['~/Desktop/r.HARPN.2018-01-18T14:25:36.145_CCF_A.fits',
'~/Desktop/r.HARPN.2018-01-18T14:20:10.645_CCF_A.fits',
'~/Desktop/r.HARPN.2018-01-18T14:31:00.875_CCF_A.fits',
'~/Desktop/r.HARPN.2018-01-18T14:36:26.373_CCF_A.fits']
for i in spec_list:
hdul = fits.open(i)
data = hdul[1].data
h1 = hdul[1].header
flux = data[1]
w = WCS(h1, naxis=1, relax=False, fix=False)
lam = w.wcs_pix2world(np.arange(len(flux)), 0)[0]
plt.figure(figsize=(5,5))
plt.plot(lam, flux)
plt.ylim(0, )
plt.xlabel('RV')
plt.ylabel('Normalized CCF')
plt.show()
Trending now
This is a popular solution!
Step by step
Solved in 3 steps
Im getting three separate plots, rather than one plot with several graphs overlayed.
Can you advise?
Regards