2016-11-08 4 views
1

I'veコード次の実行を試みた:パイソン:3Dマトリックスからアニメーションで問題が

import matplotlib.pyplot as plt 
import numpy as np 
import matplotlib.animation as animation 
from mpl_toolkits.mplot3d import axes3d 
from matplotlib import cm #color map 

u = np.array([[[0,0,0],[0,1,0],[0,0,0]],[[0,0,0],[0,2,0],[0,0,0]],[[0,0,0],[0,3,0],[0,0,0]]]) 
x = [-1,0,1] 
y = [-1,0,1] 
X,Y = np.meshgrid(x,y) 

fig = plt.figure() 
ax = axes3d.Axes3D(fig) 

def update(i, ax, fig): 
    ax.cla() 
    wframe = ax.plot_surface(X, Y, u[:,:,i],rstride=1,cstride=1,cmap=cm.coolwarm) 
    ax.set_zlim3d(-1,1) 
    print("step= ",i) 
    return wframe 

ani = animation.FuncAnimation(fig,update,frames=3,fargs=(ax, fig),interval=1000) 
ani.save('ani.mp4',bitrate=-1,codec="libx264") 

をアニメーションである、しかし、適切に機能していない - それは2回プライム工程(i = 0)を受け取り、 、それは再び上にループしています。この問題で私を助けてもらえますか?

答えて

0

追加init機能とrepeat=False

import matplotlib.pyplot as plt 
import numpy as np 
import matplotlib.animation as animation 
from mpl_toolkits.mplot3d import axes3d 
from matplotlib import cm #color map 

u = np.array([[[0,0,0],[0,1,0],[0,0,0]],[[0,0,0],[0,2,0],[0,0,0]],[[0,0,0],[0,3,0],[0,0,0]]]) 
x = [-1,0,1] 
y = [-1,0,1] 
X,Y = np.meshgrid(x,y) 

fig = plt.figure() 
ax = axes3d.Axes3D(fig) 

def init(): 
    wframe = ax.plot_surface([], [], [], rstride=1, cstride=1, cmap=cm.coolwarm) 
    return wframe 

def update(i, ax, fig): 
    ax.cla() 
    wframe = ax.plot_surface(X, Y, u[:,:,i],rstride=1,cstride=1,cmap=cm.coolwarm) 
    ax.set_zlim3d(-1,1) 
    print("step= ",i) 
    return wframe 

ani = animation.FuncAnimation(fig,update,init_func=init, frames=3,fargs=(ax, fig),interval=1000,repeat=False) 
plt.show() 
+0

はあなたの助けをありがとうございました! –

関連する問題