ich das folgende 3D-Streudiagramm einiger Beschleunigungssensordaten erzeugt habe:Matplotlib 3D Scatter Animate sequenzielle Daten
Es ist ziemlich einfach, aber ich bin zufrieden mit der Art und Weise es angesichts sieht dies ist mein erster Versuch mit Python. Hier ist der Code, den ich schrieb diese Visualisierung zu machen:
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()
Die Daten durch Zeitstempel indiziert ist, und sieht wie folgt aus:
Was Ich mag würde als nächstes zu tun ist Nimm die obige Handlung und lass jeden Punkt einzeln kommen. Gibt es eine einfache Möglichkeit, dies zu tun? Betrachtet man die Beispiele von matplotlib, sieht es so aus, als würden sie zufällig erzeugte Daten verwenden und dann die Linien animieren. Ich bin nicht sicher, wie ich die Funktion schreiben würde, die die Zahl für jede Reihe meiner Daten aktualisiert.
Wenn jemand mich zu einem Beispiel führen kann, wo etwas Ähnliches getan wird, würde ich es wirklich schätzen. Bis jetzt hat meine Suche nur Beispiele, wo die Daten von einer Funktion erzeugt wurden oder zufällig generiert wurden.