Python 使用多个通道显示fits图像

Python 使用多个通道显示fits图像,python,python-3.x,matplotlib,astropy,fits,Python,Python 3.x,Matplotlib,Astropy,Fits,我从CASA下载了一张带有多个频道的fits图像。我试图像上传普通图片一样上传图片,但显示了一个错误 “图像数据的维度无效” 图像有一个形状(1、20、250、250) 有没有办法显示所有频道 当我尝试下面的代码时,它只显示一个频道 file2=“下载/PVDiagramtest2.fits” image\u data=fits.getdata(文件2) 图像数据=图像数据[~np.isnan(图像数据)] plt.图() plt.imshow(图像数据[0,0,:,:]) plt.show()

我从CASA下载了一张带有多个频道的fits图像。我试图像上传普通图片一样上传图片,但显示了一个错误

“图像数据的维度无效”

图像有一个形状(1、20、250、250)

有没有办法显示所有频道

当我尝试下面的代码时,它只显示一个频道

file2=“下载/PVDiagramtest2.fits”
image\u data=fits.getdata(文件2)
图像数据=图像数据[~np.isnan(图像数据)]
plt.图()
plt.imshow(图像数据[0,0,:,:])
plt.show()

要查看所有图像,可以使用子图循环浏览。如何将多个图像绘制在一起的玩具示例如下所示:

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()
在你的情况下,我认为可能是这样的:

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文件,该文件可从中获得。图像为4通道200x200像素。除了使用子图制作2x2网格外,我还没有格式化图像。下面是这个示例代码的输出图像:

抽象地说,每个通道都只是另一个2D图像,因此您首先要问的问题是您希望以何种方式显示所有通道?组合成某种假彩色图像?以某种方式堆积在一系列图像中?你必须先问自己这个问题。我刚刚贴了一张我通过CASA生成的航道图。我希望它能像那样显示出来。嗨,非常感谢你的输入。我仍然遇到此错误“num必须为1”尝试从1开始递增范围。我更新了代码这是我遇到的最新错误“数组索引太多”“。数据有很多nan值,但我使用np.isnan解释了这一点。如果您可以发布一个示例,如
PVDiagramtest2.fits
,那么就更容易准确地确定什么会起作用。堆栈溢出似乎不允许我发布文件,当我尝试将fits扩展名更改为png时,它会说文件太大。