Ich arbeite an einer physikalischen 2D-Simulation und sammle zeitlich an mehreren Stellen Daten. Diese diskreten Punkte liegen entlang vertikaler Linien mit mehreren Linien in axialer Richtung. Dies macht den Datensatz effektiv zu 4D.
Nehmen wir zum Beispiel an, ich habe Sammelpunkte an (X, Y) -Koordinaten von:
- (0,0), (1,0), (2,0)
- (0,1), (1,1), (2,1)
- (0,2), (1,2), (2,2)
und an jedem Punkt sammle ich wobei Druck ist, Temperatur ist, die X- und Y-Komponenten der Geschwindigkeit sind. Bei jeder Iteration der Simulation werden diese Variablen für alle 9 Sammelstellen gespeichert. So sind alle meine Daten an jedem einzelnen Punkt im Raum zeitlich kontinuierlich.
Die Daten für einen einzelnen Punkt sehen beispielsweise folgendermaßen aus:
Ich möchte zum Beispiel jederzeit Druck zeigen, um vertikale und axiale Wellen zu zeigen. Wenn ich dies entlang einer einzelnen Linie (entweder vertikal oder axial) machen würde, könnte ich ein Wasserfalldiagramm mit Achsen (Y, Zeit, Druck) verwenden. Wenn ich jedoch 3 vertikale Linien und 3 axiale Linien habe, wären dies 6 Wasserfalldiagramme, um ein vollständiges Bild der Wellenbewegung in beide Richtungen zu erhalten. Die Raumkoordinaten sind diskrete Variablen, während das Feld (in diesem Fall Druck) und die Zeit kontinuierlich sind.
In den obigen Figuren könnte sich beispielsweise die große Druckspitze bei in der X- oder Y-Richtung .
Gibt es eine Methode, um alle auf einmal anzuzeigen? Normalerweise kann Farbe hinzugefügt werden, um eine "vierte" Dimension sichtbar zu machen. Gibt es jedoch einen anderen Ansatz? Ich plane, so viele Wege wie möglich zu planen, um zu sehen, ob etwas Informationen enthüllt, die andere nicht enthüllen.
Was wäre, wenn die Simulation 3D wäre und ich einen 5D-Datensatz hätte? Verändert das die möglichen Visualisierungsmethoden?
Antworten:
Ich selbst hatte sieben dimensionale Daten. Obwohl ich mich schließlich für eine kleine Auswahl dreidimensionaler Slice-throughs entschieden habe, ist eine Option die Darstellung paralleler Koordinaten . Dies funktioniert für eine beliebige Anzahl von Dimensionen! Aus Wikipedia:
quelle
Darstellungen von Paaren : Dies ist keine Methode zur Reduzierung der Dimensionalität, aber eine gute Methode, um schnell einen Überblick darüber zu erhalten, wo einige sinnvolle Beziehungen liegen könnten. In R enthält das Basispaket die
pairs()
Funktion, die für kontinuierliche Daten geeignet ist (es konvertiert alles in kontinuierliche Daten). Eine bessere Funktion istggpairs()
aus demGGally
Paket:quelle
Die Hauptkomponentenanalyse ist in den meisten Fällen eine gute Wahl für die Dimensionsreduktion. Ich bin nicht sicher, ob sie für Ihr spezielles Problem geeignet ist, aber sie ermittelt die orthogonalen Dimensionen, entlang derer die meisten Variationen von Datenproben erfasst werden. Wenn Sie in R entwickeln, können Sie
prcomp()
einfach Ihre ursprüngliche Datenpunktmatrix in das PCA-Formular konvertieren.quelle
Hier sind einige Möglichkeiten, 3D-Daten mit ggplot2 darzustellen. Sie können Ansätze (Facettenraster, Farben, Formen usw.) kombinieren, um die Dimensionalität Ihrer Grafik zu erhöhen.
quelle
APdf <- data.frame(Time=c(time(AirPassengers)), Year=c(floor(time(AirPassengers))), Month=c(cycle(AirPassengers)), Value=c(AirPassengers)) ; APdf$Month <- month.abb[APdf$Month] ; ggplot(APdf, aes(x=Time, y=Value)) + facet_wrap(facets='Month') + geom_line(data=APdf[,c(1,4)], colour='gray') + geom_point()
. Verdammt, ich liebe ggplot2.Dieses Diagramm zeigt die Geschwindigkeitsprofile an verschiedenen axialen Positionen, sodass Sie eine 2D-Karte des Flussfelds erhalten. Die vertikalen Linien stehen für die Geschwindigkeit 0. Die Bereiche ohne Punkte sind nicht Teil des Rechenbereichs. Natürlich ist dies nicht einfach auf 3D-Daten erweiterbar ...
quelle