Чтобы увидеть все изображения, вы можете пройтись по сюжетам. Игрушечный пример того, как объединить несколько изображений, будет выглядеть примерно так:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(10)
y = np.random.rand(10)
z = np.sqrt(x**2 + y**2)
for i in range(16):
plt.subplot(4, 4, i+1)
plt.scatter(x, y, s=80, c=z, marker=verts)
plt.show()
В вашем случае, я думаю, это может выглядеть примерно так:
from astropy.io import fits
# import numpy as np
import matplotlib.pyplot as plt
file = "WFPC2u5780205r_c0fx.fits"
image_data = fits.getdata(file)
# image_data = image_data[~np.isnan(image_data)]
num_channels = 4
x_dim = 2
y_dim = 2
colors = ['rainbow', 'PuRd_r', 'gist_earth', 'coolwarm']
for i in range(num_channels):
plt.subplot(x_dim, y_dim, i+1)
plt.imshow(image_data[i,:,:], cmap=colors[i])
plt.show()
Следует отметить, что я прокомментировал, где вы переворачиваете биты на np.isnan()
, потому что это, кажется, сглаживает массив изображений, и я не вижу рационального использования этого типа подхода, когда он только кажется вводит проблему. Однако, возможно, с вашими данными он ведет себя так, как вам нравится.
В этом примере я использовал первый образец файла FITS, доступный в службе поддержки FITS. Изображение 4-канальное 200х200 пикселей. Помимо создания сетки 2x2 с использованием подграфиков, я не форматировал изображение. Вот выходное изображение из этого примера кода:![введите здесь описание изображения](https://i.stack. imgur.com/8JScn.png)
person
Community
schedule
08.08.2019