绘制带有matshow的matplotlib子图及其问题解决

需求: 将12张matshow子图绘制在一张图上

一、如果绘制成(1,12)维度的子图,代码如下:

import matplotlib.pyplot as plt
import matplotlib;matplotlib.use('TkAgg')

fig, axes = plt.subplots(nrows=1, ncols=12)
for i, plt_image in enumerate(plt_images):  #  plt_images是个存了12组ndarray数据的list
    axes[i].matshow(plt_image, cmap=plt.get_cmap('Greens'), alpha=0.5)
    axes[i].set_title("ratio:"+str(args.ratios[i]))
plt.show()

运行结果为:

 但如果把排列方式从(1,12)直接改成(2,6),会报如下错误:

AttributeError: 'numpy.ndarray' object has no attribute 'matshow'

二、变成(2,6)子图形式排列的正确代码如下:

​
import matplotlib.pyplot as plt
import matplotlib;matplotlib.use('TkAgg')


fig, axes = plt.subplots(nrows=2, ncols=6)
for i, plt_image in enumerate(plt_images):  #  plt_images是个存了12组ndarray数据的list
    if i < 6: #  这里的6是ncols
        index1 = 0
        index2 = i
    else:
        index1 = 1
        index2 = i-6  
    axes[index1, index2].matshow(plt_image, cmap=plt.get_cmap('Greens'), alpha=0.5)
    axes[index1, index2].set_title("ratio:"+ str(args.ratios[i]))
plt.show()

​

运行结果为:

参考内容:python - AttributeError: 'numpy.ndarray' object has no attribute 'plot' - Stack Overflow

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值