Постройте изображение в СООТВЕТСТВИИ с измененными осями

#python #matplotlib #astropy #fits

#питон #matplotlib #астропия #припадки

Вопрос:

Я хотел отобразить это изображение в формате fits.

Но вместо этого я получаю вот это

Я пытался изменить оси с помощью imshow, но это не делает ничего лучше. Это код, который я использую.

 import matplotlib.pyplot as plt from astropy.visualization import astropy_mpl_style plt.style.use(astropy_mpl_style) from astropy.utils.data import get_pkg_data_filename from astropy.io import fits  image_file = get_pkg_data_filename('Or.fits') fits.info(image_file) image_data = fits.getdata(image_file, ext=0) print(image_data.shape)  plt.figure() plt.imshow(image_data, cmap='gray') plt.colorbar()  

Комментарии:

1. Можете ли вы поделиться этими данными? (Отправка ссылки, если она общедоступна) Или как выглядят данные image_data?

2. ваше изображение, вероятно, использует 10^24 в качестве стража плохих данных. Установите значения vmin и vmax для imshow в пределах вашего диапазона данных. Или, как предлагается ниже, используйте норму журнала.

3. Вы пробовали AplPy?

Ответ №1:

Из второго изображения, которое вы опубликовали в своем вопросе, кажется, что image_data оно имеет очень большие значения, при этом большинство точек данных очень малы. Попробуйте сопоставить точки данных логарифмически, чтобы, надеюсь, решить проблему.

Добавьте следующее в начало вашего кода:

 from matplotlib.colors import LogNorm  

И измените линию построения на следующую, чтобы matplotlib использовал логарифм этих значений при построении вашего изображения.

 plt.imshow(image_data, cmap='gray', norm=LogNorm())