python matplotlib.pyplot.subplot绘图

转载请注明来源https://blog.csdn.net/u010949998/article/details/80960588。

官网上使用说明:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplot.html,上面说的很详细,基本上都能找到需要的内容。提取几点自己需要的内容。

使用语句

subplot(nrows, ncols, index)

  • nrows和ncols表示一张图被分为nrows*ncols个区域
  • index表示子图所处的位置,起始位置索引为1,即1<=index<=nrows*ncols

举个简单例子:

image_arr = imread('mydata/training/0/train.png') #图片地址
plt.subplot(232)    #也可以表示为plt.subplot(2, 3, 2) 
plt.imshow(image_arr, cmap='bone')
plt.subplot(234)
plt.imshow(image_arr, cmap='bone')
plt.show()

1.循环过程中添加子图

现在讲图片存在一个矩阵中,需要将其一一读出并放入子图中,代码如下:

image_arr = load_data('mydata/training', 1) #image_arr为储存img的矩阵,image_arr[i]表示一张image矩阵;load_data为自定义函数
for i in range(25):
    plt.subplot(5, 5, 1+i)
    plt.imshow(image_arr[i], cmap='bone')
    plt.axis('off')
plt.savefig('test.tif')
plt.show()

需要注意几个点:

  • subplot(5, 5, 1+i)不能表示成subplot(551+i),否则会出现ValueError: num must be 1 <= num <= 30, not 0。原因:当后者i=9时,此时变为subplot(560),而索引得从1开始,因此会报错
  • plt.save()必须写在plt.show()前面,否则保存的图片是空白的。
  • plt.save()可以保存的格式有:eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff.

得到结果如图

2.调整subplot子图间距

subplots_adjust(left=None, bottom=None, right=None, top=None,
                wspace=None, hspace=None)

把None参数设置为想要调整的数值即可,但是好像只能将图片变小,无法删除白边。楼主还在研究,如果有大佬知道可以在评论里告诉我一下,谢谢

猜你喜欢

转载自blog.csdn.net/u010949998/article/details/80960588