python 循环中的图被覆盖

k5ifujac  于 2023-05-21  发布在  Python
关注(0)|答案(1)|浏览(151)

我试图在一个循环中创建几个情节。我创建的图每次都会自动保存在不同的文件夹中。这是密码

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/folder 22中,并且已被先前文件夹中生成的图覆盖。我该如何避免这种情况?

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

7bsow1i6

7bsow1i61#

你可以像下面这样使用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()

相关问题