im3=axs[1,:].imshow(eyave,extent=extent,vmin=-1e13,vmax=1e13) AttributeError: 'numpy.ndarray' object has no attribute 'imshow'
时间: 2024-05-20 19:14:28 浏览: 88
这个错误提示表明 `axs[1,:]` 返回的是一个 NumPy 数组对象,而不是 Matplotlib 中的 AxesSubplot 对象,因此不存在 `imshow` 方法。
通常情况下,如果你想在 Matplotlib 中绘制图像,需要先创建一个 `figure` 对象和一个 `axes` 对象,然后使用 `imshow` 方法将图像绘制到 `axes` 上。看起来你已经创建了 `figure` 和 `axes` 对象,并且你的图像数据存储在 `eyave` 数组中,但是你需要使用 `axs` 变量来访问 `axes` 对象。
你可以尝试将 `im3=axs[1,:].imshow(eyave,extent=extent,vmin=-1e13,vmax=1e13)` 替换为 `im3=axs.imshow(eyave,extent=extent,vmin=-1e13,vmax=1e13)`,这样应该就可以将图像绘制到正确的 `axes` 对象上了。
相关问题
fig = plt.figure(figsize=(fig_width, fig_length),frameon=True) ax = fig.subfigures(3,1,width_ratios=[0.2], height_ratios= [0.8,0.8,0.8]) ####################################################################### axs = ax[0].subplots(1, 2, gridspec_kw={'width_ratios': [15, 1]}) axs[1].axis('off') #plt.subplots_adjust(left=0.1,right=1) extent=[0,30,-8,8] im1=axs[0].imshow(eyave,extent=extent,cmap='RdBu_r',vmin=-6e12,vmax=6e12) im2=axs[0].imshow(ele,extent=extent,cmap=my_cmapEy,vmin=0,vmax=10) axs[0].set_yticks([-8,-4,0,4,8]) #色条位置 #imcb1=fig.add_axes([0.4, 0.15,0.5,0.7]) imcb1=fig.add_axes([0.25, 0.25,0.5,0.5])为什么我的imcb1不显示
可能是因为你没有将色条添加到 `imcb1` 中,你可以尝试在代码中添加以下语句来添加色条:
```
fig.colorbar(im1, cax=imcb1)
```
这将在 `imcb1` 中添加一个色条,其范围和颜色映射将与 `im1` 相同。
def myplot(images,titles): # For plotting multiple images at once fig, axs=plt.subplots(1,len(images),sharey=True) fig.set_figwidth(15) for img,ax,title in zip(images,axs,titles): if img.shape[-1]==3: img=cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # OpenCV reads images as BGR, so converting back them to RGB else: img=cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) ax.imshow(img) ax.set_title(title)
这是一个 Python 函数,用于同时绘制多个图像。函数名为 myplot,输入参数为 images 和 titles,分别表示要绘制的图片和对应的标题。函数中使用了 matplotlib 库进行绘图,通过创建 subplots 实现将多个图片放在一起显示。函数中还包含了一些对图像的处理,如将灰度图像转换为 BGR 彩色图像以便显示等。
阅读全文