Matplotlib三维动画多行

2024-04-20 06:21:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要动画(至少)两个三维线。我有每个坐标的x,y,z坐标列表(第二个标记为xj,yj,zj)。我试着把这个答案作为一个指导方针,但没能成功。以下是我的伪值代码:

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()

我得到的只是一张空白图表然后就崩溃了。我不知道问题出在哪里。任何帮助都将不胜感激。在


Tags: inimportformatplotlibinitlinefigplt