2015-08-16 14 views
6
enter code here 

# -*- coding: utf-8 -*- 

import math 
import matplotlib 
matplotlib.use("Agg") 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
fig1=plt.figure() 
ax=plt.axes(xlim=(-10,10), ylim=(-10,10)) 
line,=ax.plot([],[],lw=1) 
"""def init(): 
line.set_data([],[]) 
return line,""" 

dt=0.001 
X=[] 
Y=[] 
r=float(input("Enter the radius :: ")) 
w=float(input("Enter angular frequency :: ")) 
def run(data): 
    t=0 
    while w*t<=2*math.pi: 
     x=r*math.cos(w*t) 
     y=r*math.sin(w*t) 
     X.append(x) 
     Y.append(y) 
     t=t+dt 
    line.set_data(X,Y) 
    return line, 
line,=ax.plot(X,Y,lw=2) 
FFMpegWriter = animation.writers['ffmpeg'] 
writer = FFMpegWriter(fps=15, metadata=dict(artist='Me'),  bitrate=1800) 
anim=animation.FuncAnimation(fig1,run,frames=200,interval=20,blit=True) 
anim.save('amim.mp4',writer=writer)  

Die Fehlermeldung gezeigt ist ::Wie kann ich diesen Schlüsselwortfehler überwinden?

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/home/tathagata/anaconda3/lib/python3.4/site- packages/spyderlib/widgets/externalshell/sitecustomize.py", line 685, in runfile 
execfile(filename, namespace) 
File "/home/tathagata/anaconda3/lib/python3.4/site- packages/spyderlib/widgets/externalshell/sitecustomize.py", line 85, in execfile 
exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace) 
File "/home/tathagata/Documents/Python scripts/circleamim.py", line 35, in <module> 
FFMpegWriter = animation.writers['ffmpeg'] 
File "/home/tathagata/anaconda3/lib/python3.4/site-packages/matplotlib/animation.py", line 81, in __getitem__ 
return self.avail[name] 
KeyError: 'ffmpeg' 

I anacoda Verteilung und SPYDER als meine IDE verwenden. Ich habe die vielen Lösungen für Schlüsselfehler gesehen. Aber der Film wird nicht laufen. Wie kann ich den Film zum Laufen bringen? Ich hoffe, es gibt keine anderen logischen Fehler.

+0

Ist 'ffmpeg' installiert? und wurde 'matplotlib' gebaut, nachdem es installiert wurde? –

+0

'ffmpeg' ist kein Modul, nehme ich an. –

+0

Was ist mit dem Bau von Matplotlib gemeint? Wie kann es gebaut werden? –

Antwort

4

Es scheint, dass ffmpeg nicht auf Ihrem System installiert ist. Probieren Sie den folgenden Code aus:

import matplotlib.animation as animation 
print(animation.writers.list()) 

Es wird eine Liste aller verfügbaren MovieWriter ausgedruckt. Wenn nicht darunter ist, müssen Sie es zuerst von ffmpeg homepage installieren.

2

Wenn Sie Homebrew haben, buchstäblich laufen nur den Befehl

brew install ffmpeg 

Und Homebrew wird der Rest kümmern (Abhängigkeiten, etc). Wenn Sie dies nicht tun, würde ich empfehlen, wie es Homebrew oder etwas zu bekommen (apt-get auf Linux eingebaut oder eine Alternative auf O X wäre Macports)

4

Erste ffmpeg installieren und füge Pfad zu ffmpeg

# on windows 
plt.rcParams['animation.ffmpeg_path'] = 'C:\\ffmpeg\\bin\\ffmpeg.exe' 
# on linux 
plt.rcParams['animation.ffmpeg_path'] = u'/home/username/anaconda/envs/env_name/bin/ffmpeg'  

Hinweis für linux-Anwender: which ffmpeg

auch statt

FFMpegWriter = animation.writers['ffmpeg'] 
writer = FFMpegWriter(fps=15, metadata=dict(artist='Me'),  bitrate=1800) 
: der Pfad für ffmpeg kann, indem einfach which finden

Ich benutze gerade writer = animation.FFMpegWriter()