2016-02-19 86 views
3

我從matplotlib例如一個非常簡單的代碼:「IO錯誤:[錯誤32]斷管」的蟒蛇蟒蛇保存動畫文件時

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 

fig, ax = plt.subplots() 
line, = ax.plot(np.random.rand(10)) 
ax.set_ylim(0, 1) 

def update(data): 
    line.set_ydata(data) 
return line, 

def data_gen(): 
    while True: yield np.random.rand(10) 

ani = animation.FuncAnimation(fig, update, data_gen, interval=1000) 
anim.save('basic_animation.mp4', fps=30) 
plt.show() 

一切都是正確的,如果我不使用anim.save( )功能。但是,當我想保存它時,它會報告:

IOError         Traceback (most recent call last) 
<ipython-input-6-8948bc3b3f5c> in <module>() 
    16 
    17 ani = animation.FuncAnimation(fig, update, data_gen, interval=1000) 
---> 18 anim.save('basic_animation.mp4', fps=30) 
    19 plt.show() 

....(traceback details are omitted here) 

/home/xin/anaconda2/lib/python2.7/site-packages/matplotlib/backends/backend_agg.pyc in print_raw(self, filename_or_obj, *args, **kwargs) 
    517    close = False 
    518   try: 
--> 519    fileobj.write(renderer._renderer.buffer_rgba()) 
    520   finally: 
    521    if close: 

IOError: [Errno 32] Broken pipe 

我該如何解決它?或者還有其他方法可以將動畫保存到文件中嗎?

補充:要安裝的ffmpeg,我只需運行: 暢達安裝-c https://conda.anaconda.org/mutirri的ffmpeg

回答

2

讓它自己解決!我使用暢達安裝以獲得的ffmpeg,但使用的ffmpeg - 版本時,總是會說:

libssl.so.10: cannot open shared object file: No such file or directory 

所以我用:

sudo ln -s /home/xin/anaconda2/lib/libssl.so.1.0.0 libssl.so.10 

然後獲得有關libcrypto.so.10類似的問題,所以我使用方法:

sudo ln -s /home/xin/anaconda2/lib/libcrypto.so.1.0.0 libcrypto.so.10 

兩個文件是在/ lib/x86_64的Linux的GNU的。

現在的事情工作!我知道有些人也有類似的問題,所以我在這裏記錄下來。

在未來,如果需要刪除的鏈接:

cd /lib/x86_64-linux-gnu 
sudo unlink libssl.so.10 
sudo unlink libcrypto.so.10 
0

我覺得應該是

ani.save('basic_animation.mp4', fps=30) 

,而不是

anim.save('basic_animation.mp4', fps=30) 

如果你定義的變量是ani

+0

謝謝,但它仍然報告了同樣的問題.....我想這可能是壞了我的設置,因爲我是從拷貝確切的例子http://matplotlib.org/examples/animation/ basic_example.html,但仍然得到相同的報告... –

0

我有這個問題了。指定writer='imagemagick'爲我工作。

anim.save('basic_animation.mp4', fps=30, writer='imagemagick')