如何让python matplotlib刷新所有图形



我正在玩一些大型数据集,这些数据集会随着我可以控制的某些参数而变化。我现在想在同一图中绘制子图中数据的分布。但是,由于数据非常大,因此构建直方图需要一段时间。

因此,我希望绘制子图,因为它们的完成有点像下面。

import matplotlib.pyplot as plt
import numpy as np
import numpy.random as npr
Ne=10
MC=1000000
f1d,f2d = plt.figure(),plt.figure()
for Part in range(Ne):
    datax=npr.normal(size=MC)+4*Part/Ne ##Simulates my big data
    datay=npr.normal(size=MC) ##Simulates my big data
    ###The 1d histogram
    sf1d = f1d.add_subplot(1,Ne,Part+1,)    
    sf1d.hist(datax,bins=20,normed=True,histtype='stepfilled',alpha=0.5)
    sf1d.hist(datay,bins=20,normed=True,histtype='stepfilled',alpha=0.5)
    plt.show(block=False)
    ###Some flush argument()
    ###The 2d histogram
    sf2d = f2d.add_subplot(1,Ne,Part+1)
    sf2d.hist2d(datax,datay,bins=20,normed=True)
    plt.show(block=False)
    ###Some flush argument()

但是,python 不会实时绘制所有子图,但会缓冲这些子图,直到循环完成。如何强制 matplotlib 立即刷新子图?

来自matplotlib文档:

matplotlib.pyplot.draw()

重绘当前图形。

这在交互模式下用于更新已更改但不会自动重新绘制的图形。

给定任何使用 pyplot 函数创建的 Figure 实例fig,一个更面向对象的替代方法是:

fig.canvas.draw_idle()

最新更新