我想将所有迭代绘制在矩阵syn0
的一个图中,但是下面的代码仅显示最后一个迭代,如果更改代码,它将打开60000次,如何我将所有迭代都绘制在一个图中?
syn0 = 2 * np.random.random((3, 4)) - 1
arr_syn0[0][0].append(syn0[0][0])
arr_syn0[0][1].append(syn0[0][1])
arr_syn0[0][2].append(syn0[0][2])
arr_syn0[0][3].append(syn0[0][3])
arr_syn0[1][0].append(syn0[1][0])
arr_syn0[1][1].append(syn0[1][1])
arr_syn0[1][2].append(syn0[1][2])
arr_syn0[1][3].append(syn0[1][3])
arr_syn0[2][0].append(syn0[2][0])
arr_syn0[2][1].append(syn0[2][1])
arr_syn0[2][2].append(syn0[2][2])
arr_syn0[2][3].append(syn0[2][3])
plt.figure()
x=plt.imshow(syn0,aspect='auto', interpolation="nearest", cmap='YlOrRd_r', origin="upper")
plt.colorbar(x)
plt.title('syn1')
plt.show()
答案 0 :(得分:0)
您说要在一个图中绘制所有迭代,但是由于要迭代60000张图像,所以我想您要在不打开新图的情况下在同一图形上绘制新数据。
为此,您应该仅在第一张图像上使用imshow
方法,在其他图像上使用draw
方法,然后是pause
方法,该方法将调用GUI事件循环并更新图像。
尝试将您的代码简化为minimal, complete and verifiable example,我会这样做:
import numpy as np
import matplotlib.pyplot as plt
firstImage = True
for j in range(5):
syn0 = 2 * np.random.random((3, 4)) - 1
if firstImage:
img=plt.imshow(syn0,aspect='auto', interpolation="nearest", cmap='YlOrRd_r', origin="upper")
firstImage = False
else:
img.set_data(syn0)
plt.pause(0.1)
plt.draw()
plt.title('syn1')
此代码一个接一个地显示同一张图上的不同图像。 希望这会有所帮助。