2017-04-20 3 views
-1

Ich versuche meiner Freundin zu helfen, eine Animation für ein Experiment zu machen, wo sich diese Gruppe von Zellen über eine Petrischale bewegt und eine Kamera verfolgt ihre individuellen Positionen im Laufe der Zeit. Die gesammelten Daten sind in Form von Zeitintervallen und der Positionen von spezifischen Zellen in der Gruppe zu dieser Zeit. Beim Denken an die 5 wichtigen Werte hat jedes Tupel eine Form wie (C, t, X, Y, Z), wobei C = Zellzahl, t = Zeit und X, Y und Z die Position sind. Die Excel-Tabelle der Daten hat ein paar hundert dieser Tupel für ungefähr 10 Zellen C = {1,2,3, .., 10} über 40 Sekunden.Machen Sie eine 3D-Streudiagrammanimation mit (X, Y, Z) Punkten und Zeit

Ich habe Makros in Excel- und MATLAB-Programmen gesehen, in denen man ein Streudiagramm im 3D-Raum grafisch darstellen kann und es drehen kann, aber ich frage mich, welche Arbeit darin besteht, einen Schritt weiter zu gehen Animation, bei der sich die Punkte im Streudiagramm mit der Zeit verschieben. Wenn Sie beispielsweise ein 3D-Streudiagramm animieren, während sich eine Uhr etwa 20 Sekunden lang bewegt, verschieben sich die Punkte, wenn sich ihre Werte ändern.

Hat jemand Erfahrung damit, etwas in einer Programmiersprache zu machen oder zu übertreffen (obwohl ich annehme, dass es in VBA ziemlich eklig wäre).

Antwort

0

Etwas, das Sie in MATLAB gehen könnte erhalten:

% generate some data to visualize 
z = 0:pi/50:10*pi; 
x = sin(z); 
y = cos(z); 

% split by cells 
idx_C1 = 1:100; 
idx_C2 = 101:200; 

t_C1 = linspace(now-2,now-1,100); 
t_C2 = linspace(now-1,now,100); 

% plot as 3d scatter plot - distinguish cells by marker style 
figure 
p1 = scatter3(x(idx_C1),y(idx_C1),z(idx_C1),[],t_C1,'s','DisplayName','Cell 1'); 
hold on; 
p2 = scatter3(x(idx_C2),y(idx_C2),z(idx_C2),[],t_C2,'o','DisplayName','Cell 2'); 

% color code the time value 
hc = colorbar; 
hc.TickLabels = string(datetime(hc.Ticks,'ConvertFrom','datenum')); 

% show legend 
legend('show','Location','northwest'); 

Beachten Sie, dass die Visualisierung sollte immer mit den Daten zur Hand durchgeführt werden, und Sie werden erarbeiten müssen, was für Ihr Problem am besten ist.

Ich habe gewählt, die x, y, z Koordinaten zu verwenden, wie es ist, und die Zeitvariable farblich zu codieren. Die verschiedenen Zellen zeichne ich mit verschiedenen Markern. Jedoch neigen solche 5D-Plots dazu, unordentlich und verwirrend zu sein. Ich würde wahrscheinlich gehen und eine Zahl für jede Zelle erstellen, anstatt sie mit Markern zu unterscheiden.

0

Es hört sich so an, als hätten Sie bereits Code, um die Daten zu einem einzigen Zeitpunkt in 3D zu zeichnen (oder dass Sie sich wohl genug fühlen, um diesen Teil selbst herauszufinden). Wenn dies getan/getan werden kann, wäre ein anderer Ansatz, einen Matlab GUI mit einem Schieberegler zu verwenden, der den Zeitpunkt steuert, der geplottet wird. Das beabsichtigte Ergebnis wäre ein interaktives Fenster, in dem bei jedem Anpassen des Schiebereglers ein Diagramm aktualisiert wird, um die Zellenpositionen in 3D zu einer vom Schieberegler festgelegten Zeit anzuzeigen. Wenn Sie ein nicht-interaktives Video suchen, das die Bewegung im Laufe der Zeit einfach als Demonstration zeigt (zB als auffälliges Bild für einen Teil einer Präsentation), gibt es alternativ Methoden, um eine Reihe von Plots in einen zu verwandeln Video. Werfen Sie einen Blick auf this tool in File Exchange gepostet.

Verwandte Themen