2011-09-20 45 views
0

我想使用matplotlib製作一些動畫。matplotlib cla()問題

fig = plt.figure() 
ax = fig.gca(projection='3d') 
... 


for k in xrange(10): 
... 
    ax.cla() 
    ax.plot_surface(X, Y, field.real, rstride=2, cstride=2, cmap=cm.hot, 
     linewidth=0, antialiased=False) 
    ax.set_zlim3d(-50, 150) 
    filename = "out_%d.png" % k 
    fig.savefig(filename) 
... 

起初我並沒有使用CLA(),所以在每個迭代上我得到了同樣的圖片(http://dl.dropbox.com/u/4988243/out_0.png)。當我添加ax.cla()這是動畫好,但我有一些不需要的軸,我不知道如何擺脫(http://dl.dropbox.com/u/4988243/out_1.png)。

+0

您是否嘗試清除圖形本身[http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.clf]? –

+0

是的,我做了 - 沒有幫助 – Cubius

回答

0

我在ubuntu 11.04上從github運行最新版本的Matplotlib。我編寫了一個代碼片段,每次創建一個新的軸實例,這似乎會產生您想要的軸完好無損的繪圖。你看到的問題可能只是一個錯誤,但我認爲這是一個解決方法。我製作了隨機數字,僅用於演示目的。

import numpy 
from matplotlib import pyplot 

X = numpy.arange(250) 
Y = numpy.arange(250) 
X, Y = numpy.meshgrid(X, Y) 

fig = pyplot.figure() 

for ind in range(10): 
    Z = numpy.random.random((250,250)) 

    ax = fig.add_subplot(111,projection='3d') 
    ax.plot_surface(X, Y, Z, cmap='hot', linewidth=0, cstride = 2, rstride = 2, antialiased=False) 
    ax.set_zlim3d(0, 1) 
    pyplot.savefig('example' + str(ind) + '.png')