用matplotlib.animation 库把上面的代码中运动轨迹改成动态的
时间: 2024-03-26 12:40:17 浏览: 44
好的,下面是使用 `FuncAnimation` 函数实现的动态无人机运动轨迹的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation
# 无人机运动数据
latitudes = [23.135, 23.136, 23.137, 23.138, 23.139]
longitudes = [113.342, 113.343, 113.344, 113.345, 113.346]
altitudes = [100, 200, 300, 400, 500]
# 构建3D坐标系
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 设置坐标轴标签
ax.set_xlabel('Latitude')
ax.set_ylabel('Longitude')
ax.set_zlabel('Altitude')
# 设置坐标轴范围
ax.set_xlim3d(min(latitudes), max(latitudes))
ax.set_ylim3d(min(longitudes), max(longitudes))
ax.set_zlim3d(min(altitudes), max(altitudes))
# 定义绘制函数
def update(frame):
ax.clear()
ax.set_xlabel('Latitude')
ax.set_ylabel('Longitude')
ax.set_zlabel('Altitude')
ax.set_xlim3d(min(latitudes), max(latitudes))
ax.set_ylim3d(min(longitudes), max(longitudes))
ax.set_zlim3d(min(altitudes), max(altitudes))
ax.scatter(latitudes[0], longitudes[0], altitudes[0], c='r')
ax.plot(latitudes[:frame+1], longitudes[:frame+1], altitudes[:frame+1], c='b')
# 创建动画
ani = FuncAnimation(fig, update, frames=len(latitudes)-1, interval=1000)
# 显示动画
plt.show()
```
在这个示例代码中,我们定义了一个 `update` 函数,用于更新每一帧的图形。通过 `FuncAnimation` 函数创建动画对象时,我们将 `update` 函数作为第一个参数传入,并设置了 `frames` 参数为运动数据的长度减一,`interval` 参数为每帧的时间间隔,单位为毫秒。运行代码,即可看到动态无人机运动轨迹的效果。
阅读全文