I need to animate (at least) two 3D lines. I have list of x,y,z coordinates for each one (the second one marked as xj, yj, zj). I tried to fallow this answer https://stackoverflow.com/a/23065440 as a guide line but can´t make it work. Here´s my code with fake values:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d as ax3d
from matplotlib import animation
x=[1,2,3,4,5]
y=[1,2,3,4,5]
z=[1,2,3,4,5]
xj = [5,4,3,2,1]
yj = [5,4,3,2,1]
zj = [5,4,3,2,1]
N=len(x)
fig = plt.figure()
ax1 = ax3d.Axes3D(fig)
line, = ax1.plot([], [], lw=2, linestyle= "-")
ax1.set_xlim(0,6)
ax1.set_ylim(0,6)
ax1.set_zlim(0,6)
ax1.set_xlabel("x")
ax1.set_ylabel("y")
ax1.set_zlabel("z")
ax1.text2D(0, 0, "Title", transform=ax1.transAxes)
plotlays, plotcols = [2], ["orange","black"]
lines = []
for index in range(2):
lobj = ax1.plot([],[],lw=2,color=plotcols[index])[0]
lines.append(lobj)
def init():
for line in lines:
line.set_data([],[])
line.set_3d_properties([])
return lines
def animate(i):
A1 = xj[:i]
B1 = yj[:i]
C1 = zj[:i]
A2 = x[:i]
B2 = y[:i]
C2 = z[:i]
xlist = [A1, A2]
ylist = [B1, B2]
zlist = [C1, C2]
for lnum,line in enumerate:
line.set_data(xlist[lnum], ylist[lnum])
line.set_3d_properties(zlist[lnum])
return lines
anim = animation.FuncAnimation(fig, animate,init_func=init, frames=N , interval=5, blit=True)
plt.show()
All I get is blank chart and then it crashes. I can´t figure out where the problem is. Any help would be much appreciated.