我正在玩一些大型数据集,这些数据集会随着我可以控制的某些参数而变化。我现在想在同一图中绘制子图中数据的分布。但是,由于数据非常大,因此构建直方图需要一段时间。
因此,我希望绘制子图,因为它们的完成有点像下面。
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()