Я пытаюсь понять код для 3D-моделирования.Но я не смог понять конкретный синтаксис в коде.Код приведен здесь.
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation
def update_lines(num, dataLines, lines):
for line, data in zip(lines, dataLines):
line.set_data(data[0:2,0:num])
line.set_3d_properties(data[2,0:num])
line.set_marker("o")
return lines
fig = plt.figure()
ax = p3.Axes3D(fig)
t = np.linspace(-2*np.pi,2*np.pi,50)
x1, y1, z1 = np.cos(t), np.sin(t), t/t.max()
x2, y2, z2 = t/t.max(), np.cos(t), np.sin(t)
data = np.array([[x1,y1,z1],[x2,y2,z2]])
print(data)
#ax=fig.add_subplot(221,projection='3d')
lines = [ax.plot(dat[0, 0:1], dat[1, 0:1], dat[2, 0:1])[0] for dat in data]
ax.set_xlim(-1.1,1.1)
ax.set_ylim(-1.1,1.1)
ax.set_zlim(-1.1,1.1)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")
line_ani = animation.FuncAnimation(fig, update_lines, frames=100, fargs=(data, lines),
interval=100, blit=False, repeat=True)
plt.show()
Может кто-нибудь объяснить эту строку?
lines = [ax.plot(dat[0, 0:1], dat[1, 0:1], dat[2, 0:1])[0] for dat in data]
Я понимаю, что мы пытаемся построить начальные точки в трехмерном пространстве, поскольку мы не можем отправить пустуюмассивы здесь, но что это делает '[0]' там?и почему мы используем цикл for?а другая проблема
for line, data in zip(lines, dataLines):
как это работает?