#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())