python画图-将多张图片放在一张图上展示

图示效果:
image.png

代码如下:


from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

class JointPlt:
    def Picture_Synthesis(self,mother_img,son_img,save_img,coordinate=None):
        '''
        :param mother_img: 母图
        :param son_img: 子图
        :param save_img: 保存图片名
        :param coordinate: 子图在母图的坐标
        :return:
        '''
        #将图片赋值,方便后面的代码调用
        M_Img = Image.open(mother_img)
        S_Img = Image.open(son_img)
        factor = 1#子图缩小的倍数1代表不变,2就代表原来的一半

        #给图片指定色彩显示格式
        M_Img = M_Img.convert("RGBA")  # CMYK/RGBA 转换颜色格式(CMYK用于打印机的色彩,RGBA用于显示器的色彩)

        # 获取图片的尺寸
        M_Img_w, M_Img_h = M_Img.size  # 获取被放图片的大小(母图)
        print("母图尺寸:",M_Img.size)
        S_Img_w, S_Img_h = S_Img.size  # 获取小图的大小(子图)
        print("子图尺寸:",S_Img.size)

        size_w = int(S_Img_w / factor)
        size_h = int(S_Img_h / factor)

        # 防止子图尺寸大于母图
        if S_Img_w > size_w:
            S_Img_w = size_w
        if S_Img_h > size_h:
            S_Img_h = size_h

        # # 重新设置子图的尺寸
        # icon = S_Img.resize((S_Img_w, S_Img_h), Image.ANTIALIAS)
        icon = S_Img.resize((S_Img_w, S_Img_h), Image.ANTIALIAS)
        w = int((M_Img_w) / 2.0) #- S_Img_w
        h = int((M_Img_h ) / 2.0)#- S_Img_h

        try:
            if coordinate==None or coordinate=="":
                coordinate=(w, h)
                # 粘贴子图到母图的指定坐标(当前居中)
                M_Img.paste(icon, coordinate, mask=None)
            else:
                print("已经指定坐标")
                # 粘贴子图到母图的指定坐标(当前居中)
                M_Img.paste(icon, coordinate, mask=None)
        except:
            print("坐标指定出错 ")
        # 保存图片
        M_Img.save(save_img)


if __name__ == '__main__':
    x = np.linspace(-5, 5, 50)
    y = x * x
    figure, axes = plt.subplots(1, 1, figsize=(12, 10),dpi=100)
    # 3.2 绘制初始图形
    axes.plot(x, y, color='white', linestyle='--')

    # 3.3 不显示边框,此时只会取消边框,不会取消坐标轴标签
    [axes.spines[loc_axis].set_visible(False) for loc_axis in ['top', 'right', 'bottom', 'left']]
    # 3.4 不显示坐标轴标签
    axes.set_xticks([])  # 设置方法1
    axes.get_yaxis().set_visible(False)  # 设置方法2
    figSaveDir = r"F:/"
    figure.savefig(figSaveDir+"55.png")
    jointplt=JointPlt()
    jointplt.Picture_Synthesis(figSaveDir + "55.png", figSaveDir + "99.png", figSaveDir + "55.png", (0, 0))
    jointplt.Picture_Synthesis(figSaveDir + "55.png", figSaveDir + "99.png", figSaveDir + "55.png", (380, 0))
    jointplt.Picture_Synthesis(figSaveDir + "55.png", figSaveDir + "99.png", figSaveDir + "55.png", (0, 370))
    jointplt.Picture_Synthesis(figSaveDir + "55.png", figSaveDir + "99.png", figSaveDir + "55.png", (380, 370))

注意上述代码中,组装好的图片是直接保存在相应的位置,代码中是保存在"F:/55.png",被组装图片在F:/99.png,代码中只示例了一张图,如需多张不同图,只需将对应的图片文件修改即可.
上述代码中99.png如下图:
image.png
四次组装后如下图所示:
image.png