我正在使用python 3.6.7,matplotlib 2.2.2,ipython 7.0.1,notebook 5.6.0和jupyter 1.0.0。
我想创建显示在2行上的10个图,这些图在循环期间将保留在jupyter笔记本上的同一位置,并且新结果将在相同的10个图中每10次迭代显示一次。这里有一些伪代码仅供说明。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, 5, sharex='col', sharey='row', figsize=(40,15))
ax = ax.flatten()
for i in range(TRAIN_STEPS):
if i%10 == 0:
for j in range(10):
ax[j].set_title(j+i,fontsize=40)
ax[j].axes.get_xaxis().set_visible(False)
ax[j].axes.get_yaxis().set_visible(False)
ax[j].imshow(weight[i]), cmap=plt.get_cmap('seismic'))
if i%100 == 0:
print('Step:' + str(i))
我使用i + j创建了标题,以更好地查看已更新的内容。在此示例中,图集仅显示在末尾(而不在循环中显示)。
我不想在每组上保存图并在以后做动画。知道我们是否可以做到以及如何做到?(我看了很多东西,但我错过了一些东西plt.ion()
plt.show(block=False)
plt.pause(1)
time.sleep(0.1)
f = plt.figure()
f.canvas.update()
f.canvas.flush_events()
f.canvas.draw_idle()
似乎我可以通过添加以下方式来找到自己想要的方法:
display.clear_output(wait=True)
display.display(plt.gcf())
time.sleep(1.0)
还有2个小问题:
在最后一次迭代之后,将显示10个图的集合两次。使用下面在另一个线程中找到的代码,可以很容易地重现它
%matplotlib inline import time import pylab as pl from IPython import display for i in range(10): pl.plot(pl.randn(100)) display.clear_output(wait=True) display.display(pl.gcf()) time.sleep(1.0)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句