Je travaille sur une simulation physique 2D et je collecte des données dans le temps en plusieurs points. Ces points discrets sont le long de lignes verticales, avec plusieurs lignes dans la direction axiale. Cela rend l'ensemble de données 4D efficace.
Par exemple, supposons que j'ai des points de collecte aux coordonnées (X, Y) de:
- (0,0), (1,0), (2,0)
- (0,1), (1,1), (2,1)
- (0,2), (1,2), (2,2)
et à chaque point, je collecte où est la pression, est la température, sont les composantes X et Y de la vitesse. À chaque itération de la simulation, ces variables sont stockées pour les 9 points de collecte. Donc, toutes mes données sont continues dans le temps à chaque point discret de l'espace.
Par exemple, les données d'un seul point ressembleraient à:
Je suis intéressé à montrer, disons, la pression en tout point pour tous les temps pour montrer les ondes verticales et axiales. Si je devais le faire le long d'une seule ligne (verticale ou axiale), je pourrais utiliser un tracé en cascade avec des axes (Y, temps, pression). Mais si j'ai 3 lignes verticales et 3 lignes axiales, ce serait 6 parcelles en cascade pour obtenir une image complète du mouvement des vagues dans les deux directions. Les coordonnées spatiales sont des variables discrètes tandis que le champ (dans ce cas la pression) et le temps sont continus.
Dans les figures ci-dessus par exemple, le grand pic de pression à pourrait se déplacer dans la direction X ou Y.
Existe-t-il une méthode pour les montrer tous en même temps? Habituellement, la couleur peut être ajoutée pour rendre visible une "quatrième" dimension, mais existe-t-il une autre approche possible? Je prévois de le tracer autant de façons que possible pour voir si quelque chose révèle des informations que d'autres ne divulguent pas, veuillez donc présenter vos idées.
Et si la simulation était en 3D et que j'avais un jeu de données résultant 5D? Cela change-t-il les méthodes de visualisation possibles?
Réponses:
J'avais moi-même des données en sept dimensions. Bien que j'aie finalement opté pour une petite sélection de coupes tridimensionnelles, une option est le tracé des coordonnées parallèles . Cela fonctionne pour un nombre arbitraire de dimensions! De Wikipédia:
la source
Diagrammes en paires : Ce n'est pas une méthode de réduction de la dimensionnalité, mais c'est un très bon moyen d'avoir un aperçu rapide de l'endroit où se trouvent certaines relations significatives. Dans R, le package de base contient la
pairs()
fonction, ce qui est bon pour les données continues (il convertit tout en continu). Une meilleure fonction estggpairs()
, à partir duGGally
package:la source
L'analyse des composants principaux est généralement un bon choix pour la réduction de dimension dans la plupart des cas, je ne suis pas sûr qu'elle conviendra à votre problème particulier, mais elle trouvera les dimensions orthogonales le long desquelles la plupart des variations d'échantillons de données sont capturées. Si vous développez en R, vous pouvez
prcomp()
simplement convertir votre matrice de points de données d'origine au format PCA.la source
Voici quelques façons de représenter les données 3D avec ggplot2. Vous pouvez combiner des approches (grilles de facettes, couleurs, formes, etc.) pour augmenter la dimensionnalité de votre graphique.
la source
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()
. Bon sang, j'adore ggplot2.Ce tracé montre les profils de vitesse à différents emplacements axiaux, vous donnant une carte 2D du champ d'écoulement. Les lignes verticales représentent 0 vitesse. Les régions sans points ne font pas partie du domaine de calcul. Bien sûr, ce n'est pas facilement extensible aux données 3D ...
la source