2013-02-02 41 views
8

如何將「mpplotlib.animation」模塊中保存爲mp4影片的動畫分辨率設置爲?如何設置動畫的圖像分辨率?

在網上我只找到了使用「animation.FuncAnimation」的例子。例如從http://jakevdp.github.com/blog/2012/08/18/matplotlib-animation-tutorial/漂亮的教程中使用:

anim = animation.FuncAnimation(fig, animate, init_func=init, 
          frames=200, interval=20, blit=True) 
anim.save('basic_animation.mp4', fps=30, extra_args=['-vcodec', 'libx264']) 

從matplotlib.animation模塊參考我找到了「animation.Animation.save」方法提供一個「DPI」 -argument,但我不知道該怎麼正確應用此功能

matplotlib.animation.Animation.save(filename, writer=None, fps=None, dpi=None, codec=None, bitrate=None, extra_args=None, metadata=None, extra_anim=None) 

一個小例子代碼可能會有幫助。

非常感謝。

約翰內斯

PS:順便問一下,你怎麼可以插入Python的代碼的語法時才-突出?

+0

突出顯示是自動的。還要注意動畫模塊是相對的,所以你必須檢查你的'matplotlib'版本是否與你找到的例子版本相匹配。 – tacaswell

+0

你整理出來了嗎? – tacaswell

回答

2

bitrate是用於指定電影質量的參數。您設置的值越高,電影的質量就越高。

+0

但是如果我用 'anim = animation.FuncAnimation(fig,update,init_func = init,frames = len(t),blit = True)運行上述示例,則動畫。動畫.save(anim,'toll.mp4 ',fps = 20,bitrate = 20,codec ='mp4')' 我得到了錯誤「save()得到了意想不到的關鍵字參數'bitrate'」。 –

+1

我認爲'bitrate'(也許'dpi')被添加了大約MPL 1.2。 –

5

您可以以四捨五入的方式控制分辨率。分辨率,圖形大小和dpi並不都是獨立的,如果你知道其中的兩個,那麼第三個是固定的。

您可以在保存arguement的dpi,並保存它之前,與

fig.set_size_inches(h_in_inches, w_in_inches, True). 

你的分辨率是那麼dpi * h_in_inches X dpi * w_in_inches設置圖形的大小。

dpi = 100 
writer = animation.writers['ffmpeg'](fps=30) 
ani.save('test.mp4',writer=writer,dpi=dpi) 

你可能需要做升級到MPL的新版本(Debian是偉大的,因爲它是如此的保守和可怕的,因爲它是如此保守)的來源。

+0

嗯好吧,但與「比特率」參數相同的TypeError: 'anim = animation.FuncAnimation(fig,update,init_func = init,frames = len(t),blit = True) animation.Animation。保存(anim,'toll.mp4',fps = 20,dpi = 800,codec ='mp4')'我得到錯誤「save()得到了一個意想不到的關鍵字參數'dpi'」 –

+0

好多謝了,現在是工作時,「figure.set_dpi()」方法沒有效果,但調用'fig.set_size_inches(h_in_inches,w_in_inches)'產生圖像分辨率爲「h_in_inches xw_in_inches」。 –

+0

@mr_endres你在使用什麼版本的MPL? – tacaswell