Матплотлиб смежные участки - PullRequest
0 голосов
/ 21 марта 2019

Я написал библиотеку 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()

И это пример графика, сгенерированного описанным выше методом:
BLEN7M_20120812_140000_25

Итак, сейчас я пытаюсь построить данные из разных файлов и расположить их все рядом друг с другом на одной фигуре.Ось 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()

А вот график, который он генерирует в данный момент: extended_plot.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...