首页 > 解决方案 > Python中的直方图动画

问题描述

我正在尝试使用动画制作直方图,但没有显示。

#using animation library

%matplotlib notebook
import pandas as pd
import numpy as np
import matplotlib.animation as animation
import matplotlib.pyplot as plt

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.axis([-4,4,0,30])
    plt.gca().set_title('sampling the normal distribution')
    plt.gca.set_ylabel('frequency')
    plt.gca().set_xlabel('value')
    plt.annoate('n={}'.format(curr),[3,27])
    
    
    
fig=plt.figure()
a=animation.FuncAnimation(fig,update,interval=100)    

标签: pythonpython-3.xmatplotlibanimationhistogram

解决方案


你在update函数中有一些错字:

  • plt.gca.set_ylabel('frequency')应该替换为plt.gca().set_ylabel('frequency')
  • plt.annoate('n={}'.format(curr),[3,27])应该替换为plt.gca().annotate('n={}'.format(curr),[3,27])

检查此代码:

%matplotlib notebook
import pandas as pd
import numpy as np
import matplotlib.animation as animation
import matplotlib.pyplot as plt

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.axis([-4, 4, 0, 30])
    plt.gca().set_title('sampling the normal distribution')
    plt.gca().set_ylabel('frequency')
    plt.gca().set_xlabel('value')
    plt.gca().annotate('n={}'.format(curr), [3, 27])


fig = plt.figure()
a = animation.FuncAnimation(fig, update, interval = 100)

plt.show()

这给出了这个动画:

在此处输入图像描述


推荐阅读