Python 循环中的图被覆盖

Python plots in a loop are overwritten

我正在尝试循环创建多个绘图。我创建的地块每次都会自动保存在不同的文件夹中。这是代码

x = [2,4,6]
y = [1,2,3]
for i in x:
    for j in y:
        outputpath = './home/' + 'folder'+ str(i) + str(j)
        if not path.exists(outputpath):
            try:
                os.makedirs(outputpath)
            except OSError:
                print("Creation failed")
            else:
                print("Successfully created")
        a =  np.random.rand(1000)
        b = np.random.rand(20000)
        
        #Plotting a
        plt.scatter((range(0,len(a))),a)
        path1 = outputpath + '/' + 'a' + '.png'
        plt.savefig(path1)

        #Plotting b
        plt.scatter((range(0,len(b))),b)
        path2 = outputpath + '/' + 'b' + '.png'
        plt.savefig(path2)

绘图被保存在适当的文件夹中。但是生成的每个新图都会被旧图覆盖。如下图所示。此图是为 i = 2 和 j= 2 创建的。此图保存在 ./home/folder22 中,并且也已被先前文件夹中生成的图覆盖。我该如何避免这种情况?

提前致谢!

更新:我相信我必须在绘图之前每次都使用 plt.figure()?

您使用 plt.close() 如下所示:

x = [2,4,6]
y = [1,2,3]
for i in x:
    for j in y:
        outputpath = './home/' + 'folder'+ str(i) + str(j)
        if not path.exists(outputpath):
            try:
                os.makedirs(outputpath)
            except OSError:
                print("Creation failed")
            else:
                print("Successfully created")
        a =  np.random.rand(1000)
        b = np.random.rand(20000)
        
        #Plotting a
        plt.scatter((range(0,len(a))),a)
        path1 = outputpath + './' + 'a' + '.png'
        plt.savefig(path1)
        plt.close()


        #Plotting b
        plt.scatter((range(0,len(b))),b)
        path2 = outputpath + './' + 'b' + '.png'
        plt.savefig(path2)
        plt.close()