将我的输出轨迹动画化为一条移动线

Animate my output trajectory to be a moving line

我是一个新手,但我的硕士论文使用python。

我有一个按 'frame' 分组的 x 和 y 坐标的 .csv。我想为它设置动画,使其成为一条不断增长的线,因为它逐帧移动,但我不知道该怎么做。

数据点是通过无人机视频跟踪单个海豚的鼠标移动。所以每个 x,y 代表海豚在视频帧中的位置。

这是我目前拥有的:

df = pd.read_csv('/content/drive/My Drive/Thesis_Data/2016-07-17-1542_2A.csv', 
                 usecols=['x', 'y','frame'])
df.head(10)

这是我的数据的样子。我有几千积分

  frame   x     y
0   61  1057    487
1   61  1057    487
2   61  1057    487
3   61  1057    487
4   61  1057    487
5   61  1057    487
6   61  1057    487
7   61  1057    487
8   61  1057    487
9   61  1057    487
gr = df.groupby('frame')
mean_pos = gr.mean()
ax= df.plot("x", "y", color="r")
ax.set_title('mean trajectory')

output trajectory

我想为其设置动画,使其像移动线一样逐帧移动。

你可以试试这个:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import pandas as pd

# a sample dataframe  with coordinates of random movement
xy = np.random.normal(0, 1, (100, 2)).cumsum(axis=0)
df = pd.DataFrame(xy, columns=["x", "y"])

# plot setup
fig, ax = plt.subplots(figsize=(4, 4))
ax.set_xlim(df["x"].min() - 2, df["x"].max() + 2)
ax.set_ylim(df["y"].min() - 2, df["y"].max() + 2)
xdata, ydata = [], []
ln, = plt.plot([], [], 'r-')

def update(i):
    """
    updates the plot for each animation frame
    """
    ln.set_data(df.iloc[0:i, 0], df.iloc[0:i, 1])
    return ln,

# animate the plot
ani = FuncAnimation(fig, 
                    update, 
                    frames=len(df), 
                    interval=100, # delay of each frame in miliseconds
                    blit=True)
plt.show()

结果:

注意:如果您想 运行 在 Jupyter Notebook 中执行此操作,请先执行 %matplotlib notebook 魔法。