<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo zusammen,
Hat jemand Erfahrung, Blasendiagramme mit ungleichen Zeiträumen herzustellen?
In Bubble-Plots ist die Zeitdimension eher begrenzt. Es ist keine Echtzeitdimension, sondern animiert Zeile für Zeile. Beim Versuch, reale Protokolldatenereignisse mit ungleichmäßigen Zeitunterschieden zu animieren, ist die Animation daher zeitlos.
In der angehängten Datei befindet sich ein Ereignisprotokoll - jede Zeile ist ein Ereignis - in dem sich eine Person (ID) in einem X, Y-Bereich befindet. In jeder Zeile wird das Ereignis abgelesen. Das Bubble-Plot-Skript in der Datei wird Zeile für Zeile animiert, ohne dass es für die verschiedenen Zeitspannen richtig ist.
Das folgende Skript vergrößert die Datentabelle, sodass jede Zeile nur eine Minute dauert und eine zeitlichere Darstellung des Raums ermöglicht.
Ich würde mich über alle Kommentare zu dieser Angelegenheit freuen.
// Öffne zuerst die angefügte Tabelle "Bubble Plot2"
// Dann führe das Skript aus.
dt = Aktuelle Datentabelle () ;
// Die Originaltabelle wird normalerweise nach dem Zeitpunkt der Registrierung sortiert.
// Sortiere nach ID, um die Berechnung der Dauer pro Ereignis für jede ID zu ermöglichen.
dt << Sortieren ( durch ( ICH WÜRDE ) . Aufsteigend . Tisch ersetzen ( 1 ) ) ;
// Fügen Sie eine Spalte hinzu, um die Dauer jedes Ereignisses zu berechnen.
dt << Neue Spalte ( "Ereignisdauer" .
Numerisch .
Kontinuierlich .
Format ( "Beste" . 6 ) .
Formel (
Ob (
ICH WÜRDE == Verzögerung ( ICH WÜRDE . - 1 ) . Datumsunterschied ( : Zeit . Verzögerung ( : Zeit . - 1 ) . "Minute" . "tatsächlich" ) .
// Dies sollte eine hypothetische Dauer bis zum letzten Ereignis im Datensatz berechnen, funktioniert aber nicht.
Datumsunterschied ( : Zeit . Col max ( Zeit ) ) . "Minute" .
"tatsächlich"
)
) .
) ;
dt << Formeln ausführen ;
Säule ( dt . "Ereignisdauer" ) << Formel löschen ;
// Zeichne die ursprüngliche Länge der Tabelle auf, bevor du Zeilen hinzufügst.
// Wenn Sie Nrow () direkt in der For-Schleife verwenden, wird eine Endlosschleife erzeugt.
rowN = N Row () ;
// Produziere für jede ursprüngliche Zeile so viele neue Zeilen wie die Dauer jedes Ereignisses.
Zum ( ich = 1 . ich <= rowN . ich ++
rowi = dt << rudern ( ich ) ;
Zum ( z = 1 . z <= ( : Name ( "Ereignisdauer" ) [ ich ] - 1 ) . z ++
z ;
dt << Zeile hinzufügen ( rowi ) ;
dt << Formeln ausführen ;
) ;
) ;
// sortiere die Datentabelle erneut, um die nächste Formel zu vereinfachen.
dt << Sortieren ( durch ( ICH WÜRDE . Zeit ) . Aufsteigend . Tisch ersetzen ( 1 ) ) ;
// Neue Spalte mit aktueller Zeit für jede Zeile hinzufügen.
Neue Spalte ( "Echtzeit" .
Numerisch .
Kontinuierlich .
Format ( "JJJJ-mm-ddThh: mm" . 16 ) .
Eingabeformat ( "JJJJ-mm-ddThh: mm" ) .
Formel (
Ob (
Reihe () == 1 . : Zeit .
: ICH WÜRDE > Verzögerung ( : ICH WÜRDE . 1 ) . : Zeit .
// Dadurch wird der vorherigen Zeitangabe eine Minute hinzugefügt.
Verzögerung ( : Echtzeit . 1 ) + 60
)
) .
) ;
// Setze die Farbe nach ID
Aktuelle Datentabelle () << Farbe nach Spalte (
ICH WÜRDE .
Farbe ( 1 ) .
Farbthema ( "JMP-Standard" ) .
Marker ( 0 ) .
Marker-Thema ( "" ) .
Kontinuierliche Skala ( 0 ) .
Maßstab umkehren ( 0 ) .
Ausgeschlossene Zeilen ( 0 )
) ;;
// das Blasendiagramm mit aktueller Zeitangabe erstellen
Blasendiagramm (
X ( : x ) .
Y ( : y ) .
Zeit ( : Echtzeit ) .
ICH WÜRDE ( : ICH WÜRDE ) .
Titelposition ( 1.61111111111111 . 2,7 ) .
SendToReport (
Versand (
{} .
"Blasendiagramm von y nach x Echtzeit-ID-ID" .
OutlineBox .
{ Titel einstellen ( "Bubble Plot von y nach x Across Echtzeit ID ID - richtige Zeitintervalle !!! )}
) .
Versand ( {} . "1" . ScaleBox . { Mindest ( 0,5 ) . Max ( 3,5 ) . Inc ( 0,5 ) . Kleinere Zecken ( 1 ) . Gedrehte Etiketten ( "Horizontal" )} ) .
Versand ( {} . "2" . ScaleBox . { Mindest ( 0,5 ) . Max ( 3,5 ) . Inc ( 0,5 ) . Kleinere Zecken ( 1 ) . Gedrehte Etiketten ( "Horizontal" )} )
)
) ;
danke dan,
Die Probleme sind korrekt. Ich habe mich tatsächlich gefragt, ob es möglich ist, die Option "Dauer" in die Plattform einzufügen, da andere Plattformen eine Option für Gewicht oder Frequenz haben.
Die Sache ist, dass Daten alle möglichen Strukturen haben können. B. eine Spalte für die Startzeit und eine weitere für die Endzeit jedes Ereignisses. oder alternativ Startzeit und Dauer. Darüber hinaus gibt es in vielen Fällen Probleme, die Dauer des letzten Ereignisses zu definieren.
In meinem Fall ist die Animation zwischen den Ereignissen nicht so wichtig. Entscheidender ist die korrekte relative Position der Ereignisse zu jedem Zeitpunkt wie in einem Schachspiel. Das Problem tritt auf, wenn Daten nicht in festgelegten Intervallen von jeder Beobachtung erfasst werden, sondern nur Änderungen aufgezeichnet werden (Ereignisprotokoll).
ron
Hi Ron,
Vielen Dank für das Beispiel. Es gibt mehrere andere Ereignismodelle, die für Bubble Plot interessant sind. Ich denke, hier gibt es zwei Probleme:
1) Bubble Plot hat nicht das Konzept der Ereignisdauer. Jede Beobachtung ist sofort und es wird angenommen, dass ID-Gruppen sich linear zwischen den Beobachtungen bewegen. Ich stelle fest, dass Sie beim Erweitern der Tabelle die Position konstant halten. Ich gehe also davon aus, dass die Interpolation in Ihrem Fall nicht erwünscht ist.
2) Das größere Problem kann sein, dass die Zeit selbst zwischen jeder Beobachtung linear animiert wird, jedoch nicht insgesamt linear. Dies ist in Fällen hilfreich, in denen Beobachtungen in Clustern mit großen Lücken dazwischen auftreten können. Sie können jedoch verzerrt erscheinen, wenn Sie davon ausgehen, dass die Animation mit einer konstanten Rate folgt.
Wenn diese Probleme richtig klingen, werde ich diese als Vorschläge für zukünftige Bubble-Plot-Arbeiten hinzufügen.
Freundliche Grüße,
-Dan