我有这个python代码:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
n = 100
x = np.random.randn(n)
def update(curr):
if curr == n:
a.event_source.stop()
plt.cla()
bins = np.arange(-4,4,0.5)
plt.hist(x[:curr],bins = bins)
plt.gca().set_title('Samplng the Normal distribution')
plt.gca().set_ylabel('Frequency')
plt.gca().set_xlabel('Value')
plt.annotate('n = {}'.format(curr), [3,27])
fig = plt.figure()
a = animation.FuncAnimation(fig, update, interval = 100)
它应该每3次绘制更新一次正态分布图,但是当我运行它时,我的情节是空的,没有任何反应。你知道为什么吗?
谢谢!
答案 0 :(得分:3)
问题中的代码完美无瑕。它每100毫秒更新一次图。
我的猜测如下。您不在此处使用plt.show()
但仍看到情节的事实表明您在内联环境中使用它。例如。您可能正在使用Jupyter并且(有意或无意)已激活%matplotlib inline
。内联后端不支持动画(因为它只显示了绘图的png图像,因此很清楚),因此解决方案可能是使用不同的后端。
如果在jupyter笔记本中:
%matplotlib notebook
。 如果您想让动画片和使用%matplotlib inline
并且使用matplotlib 2.1或更高版本,您也可以使用< / p>
IPython.display import HTML
HTML(ani.to_jshtml())
显示动画。
%matplotlib tk
。如果将代码作为脚本运行:
plt.show()
。如果在spyder中运行
答案 1 :(得分:1)
你最后错过了plt.show()
。有了这条指令对我有用。