Pracuję nad symulacją fizyczną 2D i zbieram dane na czas w kilku punktach. Te dyskretne punkty znajdują się wzdłuż linii pionowych, z wieloma liniami w kierunku osiowym. To sprawia, że zestaw danych skutecznie 4D.
Załóżmy na przykład, że mam punkty zbiórki o współrzędnych (X, Y):
- (0,0), (1,0), (2,0)
- (0,1), (1,1), (2,1)
- (0,2), (1,2), (2,2)
i w każdym punkcie zbieram gdzie to ciśnienie, to temperatura, to X- i Y-składowe prędkości. Przy każdej iteracji symulacji zmienne te są przechowywane dla wszystkich 9 punktów gromadzenia. Więc wszystkie moje dane są ciągłe w czasie w każdym dyskretnym punkcie w przestrzeni.P T U , V
Na przykład dane dla jednego punktu wyglądałyby następująco:
Interesuje mnie pokazywanie, powiedzmy, ciśnienia we wszystkich punktach przez cały czas, aby pokazać fale pionowe i osiowe. Gdybym miał to zrobić wzdłuż jednej linii (pionowej lub osiowej), mógłbym użyć wykresu wodospadu z osiami (Y, czas, ciśnienie). Ale jeśli mam 3 linie pionowe i 3 linie osiowe, byłoby to 6 wykresów wodospadu, aby uzyskać pełny obraz ruchu fali w obu kierunkach. Współrzędne przestrzenne są zmiennymi dyskretnymi, podczas gdy pole (w tym przypadku Ciśnienie) i czas są ciągłe.
Na przykład na powyższych rysunkach duży pik ciśnienia przy może przemieszczać się w kierunku X lub Y.
Czy istnieje metoda pokazania ich wszystkich naraz? Zwykle można dodać kolor, aby widoczny był „czwarty” wymiar, ale czy istnieje inne możliwe podejście? Planuję nakreślić to na jak najwięcej sposobów, aby zobaczyć, czy cokolwiek ujawnia informacje, których inni nie wiedzą, więc proszę, przedstawcie jakieś pomysły.
Co jeśli symulacja była 3D, a ja miałbym wynikowy zestaw danych 5D? Czy to zmienia możliwe metody wizualizacji?
Odpowiedzi:
Sam miałem trochę danych siedmiowymiarowych. Chociaż ostatecznie zdecydowałem się na mały wybór trójwymiarowych przekrojów, jedną z opcji jest wykres równoległych współrzędnych . Działa to dla dowolnej liczby wymiarów! Z Wikipedii:
źródło
Wykresy par : nie jest to metoda zmniejszania wymiarów, ale jest to naprawdę dobry sposób, aby uzyskać szybki przegląd miejsc, w których mogą znajdować się znaczące relacje. W R pakiet podstawowy zawiera
pairs()
funkcję, która jest dobra dla ciągłych danych (konwertuje wszystko na ciągłe). Lepszą funkcją jestggpairs()
zGGally
pakietu:źródło
Analiza głównych składników jest ogólnie dobrym wyborem do redukcji wymiarów w większości przypadków, nie jestem pewien, czy będzie pasować do konkretnego problemu, ale znajdzie wymiary ortogonalne, wzdłuż których przechwytywana jest większość wariantów próbek danych. Jeśli rozwijasz się w języku R, możesz użyć
prcomp()
do prostej konwersji oryginalnej macierzy punktów danych do postaci PCA.źródło
Oto kilka sposobów przedstawiania danych trójwymiarowych za pomocą ggplot2. Możesz łączyć podejścia (siatki aspektów, kolory, kształty itp.), Aby zwiększyć wymiarowość grafiki.
źródło
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()
. Cholera, kocham ggplot2.Ten wykres pokazuje profile prędkości w różnych lokalizacjach osiowych, dając mapę 2D pola przepływu. Linie pionowe reprezentują prędkość 0. Regiony bez kropek nie są częścią domeny obliczeniowej. Oczywiście nie jest to łatwe do rozszerzenia na dane 3D ...
źródło