显示具有多个通道的拟合图像

时间:2019-08-06 19:56:12

标签: python python-3.x matplotlib astropy fits

Here is my expected result

我从CASA下载了具有多个通道的拟合图像。我尝试像正常显示图像一样上传图像,但是显示错误

  

“图像数据的尺寸无效”。

图像的形状为(1、20、250、250)。

是否可以显示所有频道?

当我尝试下面执行的代码时,它仅显示其中一个通道。

file2 = "Downloads/PVDiagramtest2.fits"
image_data = fits.getdata(file2)

image_data = image_data[~np.isnan(image_data)]

plt.figure()
plt.imshow(image_data[0,0,:,:])

plt.show()

1 个答案:

答案 0 :(得分:1)

要查看所有图像,可以遍历子图。一个如何将多个图像绘制在一起的玩具示例如下所示:

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 Support Office中提供的第一个示例FITS文件。图像是4通道200x200像素。除了使用子图制作2x2网格外,我还没有格式化图像。这是此示例代码的输出图像:enter image description here