保存多张图片

时间:2021-04-16 23:58:19

标签: python image matplotlib

我有一个包含网格矩阵的列表。 在我绘制这些之后,我想用不同的名称保护它们中的每一个。

game = []
start = []

while len(game)<=1000:
    m = np.random.randint(0,3,(5,5))
    m[random.randint(0,4)][random.randint(0,4)] = 4

    num_zeros = (m == 0).sum()
    num_ones = (m == 1).sum()
    num_twos = (m == 2).sum()
    if num_ones ==9 and num_twos ==8:
        game.append(m), start.append(1)
    elif  num_ones ==8 and num_twos ==9:
        game.append(m)
        start.append(2)

num_zeros , num_ones, num_twos

我在绘图后尝试这个

colors = ['lightcyan','#6871E4','#E67CCC', 'black']


for i in range(len(game)):
    plt.matshow(game[i],cmap=mpl.colors.ListedColormap(colors)) #[0,1,2,4])
    plt.title('start', color = colors[start[i]],fontsize = 22)
    for i in range(5):
        plt.axhline(i+0.5, c = 'azure', linewidth=11)
    for i in range(5):
        plt.axvline(i+0.5, c = 'azure',linewidth=11) 
    plt.axhline(-0.5, c = 'azure', linewidth=11)
    plt.axvline(-0.5, c = 'azure', linewidth=11)
    plt.axvline(4.55, c = 'azure', linewidth=5)
    plt.axis('off')
    plt.savefig('game'+str(i)+'.png')

结果我只保存了图像 4 xD

谢谢!

1 个答案:

答案 0 :(得分:0)

只需更改内部(嵌套)循环的循环变量即可。像这样:

colors = ['lightcyan','#6871E4','#E67CCC', 'black']


for i in range(len(game)):
    print(i)
    plt.matshow(game[i],cmap=mpl.colors.ListedColormap(colors)) #[0,1,2,4])
    plt.title('start', color = colors[start[i]],fontsize = 22)
    for j in range(5): #change i to j
        plt.axhline(j+0.5, c = 'azure', linewidth=11)
    for k in range(5): #change i to k
        plt.axvline(k+0.5, c = 'azure',linewidth=11) 
    plt.axhline(-0.5, c = 'azure', linewidth=11)
    plt.axvline(-0.5, c = 'azure', linewidth=11)
    plt.axvline(4.55, c = 'azure', linewidth=5)
    plt.axis('off')
    print("saving"+'game'+str(i)+'.png')
    plt.savefig('game'+str(i)+'.png')

现在您的内部循环不会覆盖您保存图像所用的 i 的实际值。