对于以下代码
# Numerical operation
SN_map_final = (new_SN_map - mean_SN) / sigma_SN
# Plot figure
fig12 = plt.figure(12)
fig_SN_final = plt.imshow(SN_map_final, interpolation='nearest')
plt.colorbar()
fig12 = plt.savefig(outname12)
当new_SN_map
是一维数组,而mean_SN
和sigma_SN
是常量时,我得到以下错误。
Traceback (most recent call last):
File "c:\Users\Valentin\Desktop\Stage M2\density_map_simple.py", line 546, in <module>
fig_SN_final = plt.imshow(SN_map_final, interpolation='nearest')
File "c:\users\valentin\appdata\local\enthought\canopy\user\lib\site-packages\matplotlib\pyplot.py", line 3022, in imshow
**kwargs)
File "c:\users\valentin\appdata\local\enthought\canopy\user\lib\site-packages\matplotlib\__init__.py", line 1812, in inner
return func(ax, *args, **kwargs)
File "c:\users\valentin\appdata\local\enthought\canopy\user\lib\site-packages\matplotlib\axes\_axes.py", line 4947, in imshow
im.set_data(X)
File "c:\users\valentin\appdata\local\enthought\canopy\user\lib\site-packages\matplotlib\image.py", line 453, in set_data
raise TypeError("Invalid dimensions for image data")
TypeError: Invalid dimensions for image data
这个错误的根源是什么?我以为我的数字运算是允许的。
StackOverflow上有一个(有些)相关的问题:
这里的问题是一个形状数组(nx,ny,1)仍然被认为是一个3D数组,并且必须是
squeeze
d或切片成2D数组。一般来说,例外的原因
如图所示:^{} 需要二维数组,或者三维数组的形状为3或4!
您可以使用(这些检查由
imshow
完成,此函数仅用于在输入无效时提供更具体的消息):就你而言:
np.asarray
是由matplotlib.pyplot.imshow
在内部完成的,所以通常最好也这样做。如果你有一个numpy数组,它是过时的,但如果不是(例如list
),它是必要的。在您的特定情况下,您有一个1D数组,因此需要添加一个带^{} 的维度
或者只使用接受1D数组的东西,比如
plot
:相关问题 更多 >
编程相关推荐