Matplotlib 3D Scatter Animar datos secuenciales

He producido el siguiente diagrama de dispersión 3D de algunos datos del acelerómetro:

Es bastante básico, pero estoy satisfecho con la forma en que se ve teniendo en cuenta que este es mi primer intento de usar Python. Aquí está el código que escribí para hacer esta visualización:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.style.use('ggplot')
from mpl_toolkits.mplot3d import Axes3D
from mpldatacursor import datacursor

AccX = pd.read_csv('Data_Retrieval_April_05_2017.csv')
AccX.columns = ['Tag', 'Timestamp', 'X']
AccX = AccX[AccX['Tag'].str.contains("ACC856:AccelerationX")]
del AccX['Tag']

print(AccX.head())

AccY = pd.read_csv('Data_Retrieval_April_05_2017.csv')
AccY.columns = ['Tag', 'Timestamp', 'Y']
AccY = AccY[AccY['Tag'].str.contains("ACC856:AccelerationY")]
del AccY['Tag']

print(AccY.head())

AccZ = pd.read_csv('Data_Retrieval_April_05_2017.csv')
AccZ.columns = ['Tag', 'Timestamp', 'Z']
AccZ = AccZ[AccZ['Tag'].str.contains("ACC856:AccelerationZ")]
del AccZ['Tag']

print(AccZ.head())

Accel = AccX.merge(AccY,on='Timestamp').merge(AccZ,on='Timestamp')

Accel = Accel.set_index(['Timestamp'])

print(Accel.head())

Accel['X'] = Accel.X.astype(float)
Accel['Y'] = Accel.Y.astype(float)
Accel['Z'] = Accel.Z.astype(float)

print(Accel.head())
print(Accel.dtypes)

accelscat = plt.figure().gca(projection='3d')
accelscat.scatter(Accel['X'],Accel['Y'],Accel['Z'], c='darkblue', alpha=0.5)

accelscat.set_xlabel('X')
accelscat.set_ylabel('Y')
accelscat.set_zlabel('Z')

plt.show()

Los datos se indexan por marca de tiempo y se ven así:

Lo que me gustaría hacer a continuación es tomar la trama anterior y hacer que cada punto entre uno a la vez. ¿Hay una manera simple de hacer esto? Mirando los ejemplos dematplotlib parece que están usando datos generados al azar y luego animan las líneas. No estoy seguro de cómo escribiría la función que actualiza la figura para cada fila de mis datos.

Si alguien puede dirigirme a un ejemplo donde se está haciendo algo similar, realmente lo agradecería. Hasta ahora, mi búsqueda solo me ha dado ejemplos en los que los datos estaban siendo producidos por una función o se generaban al azar.

Respuestas a la pregunta(1)

Su respuesta a la pregunta