Ich versuche eine Animation der Form eine exponentielle Verteilung zu machen, wenn die Stichprobengröße zunimmt (von 100 bis 1000). Es gibt auch einen Schieberegler zum Konfigurieren des Lambda-Parameters der Verteilung und eine Schaltfläche zum Starten der Animation.Animation funktioniert nicht auf Matplotlib
Mein Problem ist, dass, obwohl das Layout gerendert wird, wenn ich den Startknopf drücken keine Animation auftritt. Hier ist mein Versuch so weit:
Editted, um die Dinge zu vereinfachen, ich laufe es in dem Python-Notebook:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.widgets import Slider
n0 = 100
n1 = 1000
#Create figure object
fig, ax = plt.subplots(1,1)
plt.subplots_adjust(bottom=0.3)
#Create Sliders for parameters
axlam = plt.axes([0.20, 0.05, 0.20, 0.03], facecolor=axcolor)
slam = Slider(axlam, 'Exp lambda', 0, 5, valinit=1)
#Default distributions
dexp = np.random.exponential(1, n1)
#Updates distributions when sliders are changed
def updateDist(val):
lam = slam.val
dexp = np.random.exponential(lam, n1)
slam.on_changed(updateDist)
#updates plot on FuncAnimation call
def update(curr):
if(curr == (n1-n0)):
a.event.source.stop()
plt.cla()
bins_exp = np.arange(0,4/slam.val,0.25)
ax.hist(dexp[:(n0+curr)],bins=bins_exp)
ax.set_title('Exp n={}'.format(n0+curr))
#Define Start button and function to start animation
goax = plt.axes([0.8, 0.025, 0.1, 0.04])
button = Button(goax, 'Start', color=axcolor, hovercolor='0.975')
a = None
def start(event):
a = animation.FuncAnimation(fig,update,interval=100)
button.on_clicked(start)