Я написал библиотеку Python, которая использует Matplotlib и Astropy для генерации спектров из данных радиоизлучений Солнца.Я удовлетворен тем, как он отображает данные из одного файла FITS, но теперь я пытаюсь отобразить данные из нескольких файлов FITS на одной фигуре рядом.Я прочитал некоторую документацию Matplotlib и некоторые вопросы, связанные с этим, такие как Как получить несколько субплотов в matplotlib? .
Вот часть кода, который строит данные из одного файла FITS:
def plot_freq_range_db_above_background(self, start_freq, end_freq):
plt.figure(1, figsize=(11, 6))
plt.imshow(self.hdul_dataset['db'] - self.hdul_dataset['db_median'],
cmap='magma', norm=plt.Normalize(self.hdul_dataset['v_min'],
self.hdul_dataset['v_max']
),
aspect='auto', extent=[self.hdul_dataset['time_axis'][0],
self.hdul_dataset['time_axis']
[-1000],
self.hdul_dataset['frequency'][-1],
self.hdul_dataset['frequency'][0]])
plt.ylim(start_freq, end)
plt.gca().invert_yaxis()
plt.colorbar(label='dB above background')
plt.xlabel('Time (UT)', fontsize=15)
plt.ylabel('Frequency (MHz)', fontsize=15)
plt.title(self.filename, fontsize=16)
plt.tick_params(labelsize=14)
plt.show()
И это пример графика, сгенерированного описанным выше методом:

Итак, сейчас я пытаюсь построить данные из разных файлов и расположить их все рядом друг с другом на одной фигуре.Ось X (частота) одинакова для каждого отдельного графика, а ось Y (время) непрерывна от одного файла к следующему.
Вот метод, который я написал, пытаясь выполнить то, что я только что описал:
def plot_fits_files_list(files_list, start_freq, end_freq):
dim = len(files_list)
plt_index = 1
plt.figure(1)
for file in files_list:
fits_filename = file.split(os.sep)[-1]
fitsfile = ECallistoFitsFile(fits_filename)
fitsfile.set_file_path()
fitsfile.set_hdul_dataset()
plt.subplot(dim, dim, plt_index)
plt_index += 1
plt.imshow(
fitsfile.hdul_dataset['db'] -
fitsfile.hdul_dataset['db_median'],
cmap='magma',
norm=plt.Normalize(fitsfile.hdul_dataset['v_min'],
fitsfile.hdul_dataset['v_max']),
aspect='auto', extent=[fitsfile.hdul_dataset['time_axis'][0],
fitsfile.hdul_dataset['time_axis']
[-1000],
fitsfile.hdul_dataset['frequency'][-1],
fitsfile.hdul_dataset['frequency'][0]])
plt.ylim(start_freq, end_freq)
plt.gca().invert_yaxis()
plt.colorbar(label='dB above background')
plt.xlabel('Time (UT)', fontsize=15)
plt.ylabel('Frequency (MHz)', fontsize=15)
plt.title("Multiple Plots Test", fontsize=16)
plt.tick_params(labelsize=14)
plt.show()
А вот график, который он генерирует в данный момент: 