(2022.5)Pyhthon Matplotlib实现在图中绘制多子图(一纸多图)

目录

前言

一、从指定路径下读取

二、手动添加路径

总结


前言

写Paper或者做CW时,可能会遇见需要将多张图片绘制在一起的情景,使用PS或拼图工具可能会比较麻烦。

这次给大家介绍两种Pyhthon的方式,一种是读取指定路径下所有图片,另一种是手动添加图片路径。


一、从指定路径下读取

思路是先遍历路径下所有图片,然后再画图,画好的图会自动保存。(注意:使用时替换为自己的路径)

plt.subplots中三个参数依次为行和列中子图的个数,以及子图的大小

使用mpimg.imread读取图片

set_title为图片对应的标题,默认显示图片名,也可以自己按需设置

plt.tight_layout可以让子图间距更小,排列更紧凑

import os
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

img = []
labels = []
figure_num = 0

for root, dirs, names in os.walk("C:Users\Administrator\Desktop\Figure_2"):
    for filename in names:
        img.append(os.path.join(root, filename))
        figure_num += 1
        labels.append(filename)

fig, ax = plt.subplots(nrows = 2, ncols = 2, figsize = (10, 10))
ax = ax.ravel(order = 'C')
for i in range(figure_num):
    ax[i].imshow(mpimg.imread(img[i]))
    ax[i].set_title(labels[i], fontsize=40)
    ax[i].set_xticks([])
    ax[i].set_yticks([])
plt.tight_layout()
plt.savefig('C:Users\Administrator\Desktop\Figure_2')
plt.show()

以下是实现效果:

二、手动添加路径

示例为4张子图的绘制,可按需调整,步骤如下:

1. 更改plt.subplots中的参数

2. 复制粘贴每张子图的四行代码,并更改ax[][]中的数值

实现代码如下:

figure, ax = plt.subplots(nrows = 2, ncols = 2, figsize = (10, 10)) 
# 图一
ax[0][0].imshow(mpimg.imread("C:Users\Administrator\Desktop\Figure_2\\1.jpg"))
ax[0][0].set_title('1', fontsize = 40)
ax[0][0].set_xticks([])
ax[0][0].set_yticks([])
# 图二
ax[0][1].imshow(mpimg.imread("C:Users\Administrator\Desktop\Figure_2\\2.jpg"))
ax[0][1].set_title('2', fontsize = 40)
ax[0][1].set_xticks([])
ax[0][1].set_yticks([])
# 图三
ax[1][0].imshow(mpimg.imread("C:Users\Administrator\Desktop\Figure_2\\3.jpeg"))
ax[1][0].set_title('3', fontsize = 40)
ax[1][0].set_xticks([])
ax[1][0].set_yticks([])
# 图四
ax[1][1].imshow(mpimg.imread("C:Users\Administrator\Desktop\Figure_2\\4.jpg"))
ax[1][1].set_title('4', fontsize = 40)
ax[1][1].set_xticks([])
ax[1][1].set_yticks([])
plt.tight_layout()
plt.savefig('C:Users\Administrator\Desktop\Figure_2')
plt.show()


总结

以上就是两种实现的方法,都很简单,复制代码并更改路径即可使用。

欢迎大家在评论分享看法和意见,谢谢。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值