1 回答
TA贡献1775条经验 获得超11个赞
您需要将 append 的结果保存在数组x
,y
和 中z
。您看到它附加的原因很可能是因为您正在以交互方式测试它。但正如@hpaulj 提到的,为了您的目的,您必须将附加的数组存储在函数中。此外,您必须声明x, y, z
为global
反映更改以避免IndexError
. 要初始化 line 对象,您可以定义一个init
函数,然后i
在您的FuncAnimation
该文档说(重点煤矿)
返回:追加:ndarray
arr 的副本,在轴上附加了值。请注意, append 不会就地发生:分配并填充一个新数组。
您将不得不存储新数组
# Initizlise x, y, z here
def init():
line.set_data([], [])
line.set_3d_properties([])
return line,
# dx_dt, dy_dt, dz_dt etc. functions here
fig = plt.figure()
ax = p3.Axes3D(fig)
#Creating a line object
line, = ax.plot3D([0.0],[10.0],[0.0],'-b')
# Setting axes limits here
def animate(i):
global x, y, z
x = np.append(x, next_xpt(x[i], y[i], z[i]))
y = np.append(y, next_ypt(x[i], y[i], z[i]))
z = np.append(z, next_zpt(x[i], y[i], z[i]))
line.set_data(x[:i+1],y[:i+1])
line.set_3d_properties(z[:i+1])
return line,
ani = animation.FuncAnimation(fig, animate, init_func=init, interval=50, blit=False)
添加回答
举报