【发布时间】:2020-12-06 23:21:42
【问题描述】:
我有 3 个列表,分别包含 x 坐标、y 坐标和 z 坐标。我正在尝试跟踪 3D 空间中的位置。我使用下面的代码:
fig = plt.figure()
ax = p3.Axes3D(fig)
def update(num, data, line):
line.set_data(data[:2, :num])
line.set_3d_properties(data[2, :num])
N = 4000
d3d=np.array([xdata,ydata,zdata])
line, = ax.plot(d3d[0, 0:1], d3d[1, 0:1], d3d[2, 0:1], color='blue')
ax.set_xlim3d([2.0, -2.0])
ax.set_xlabel('X')
ax.set_ylim3d([2.0, -2.0])
ax.set_ylabel('Y')
ax.set_zlim3d([0.0, 4.0])
ax.set_zlabel('Z')
ani = animation.FuncAnimation(fig, update, N, fargs=(d3d, line), interval=10000/N, blit=False)
plt.show()
有了这个,我可以成功地看到蓝色的轨迹。但是,我想以蓝色查看更新后的轨迹,并希望将之前的轨迹变灰:
我尝试在更新功能中使用下面的内容,所以上一行显示为灰色:
def update(num, data, line):
line.set_data(data[:2, :num])
line.set_3d_properties(data[2, :num])
if line is not None:
line.set_color('gray')
但这只会使整个轨迹变灰。任何帮助将不胜感激。
【问题讨论】:
-
我认为您需要创建两条线:一条用于旧的灰线,一条用于新的蓝线,然后随着时间的推移不断更新它们。单个
line3D实例在matplotlib 中不能有多种颜色
标签: python python-3.x matplotlib matplotlib-animation