Jak wykreślić powierzchnię wykresu 4D?


11

Próbuję wykreślić funkcję fali dla cząstki w polu 3D. Wymaga to ode mnie wykreślenia 4 zmiennych: osi x, y, z oraz funkcji gęstości prawdopodobieństwa.

Funkcja gęstości prawdopodobieństwa to:

abs((np.sin((p*np.pi*X)/a))*(np.sin((q*np.pi*Y)/b))*(np.sin((r*np.pi*Z)/c)))**2

Używam np.arange()dla X, Y i Z.

Przeczytałem, że aby to zrobić, musisz narysować powierzchnię wykresu 4D. Oto jak powinno to wyglądać:

wprowadź opis zdjęcia tutaj


3
Co powiesz na użycie koloru do przedstawienia gęstości prawdopodobieństwa?
— Shuhao Cao,

Wyobrażam sobie, że nieprzezroczystość działałaby dobrze dla tego rodzaju fabuły. Konieczne może być podanie różnych perspektyw dla każdego wykresu, ale uczynienie wykresu bardziej nieprzejrzystym w miejscu, w którym prawdopodobnie znajduje się cząstka, dobrze wizualizuje te dane.
— Godric Seer,

2
Ponieważ wygląda na to, że używasz numpy, możesz użyć mayavi, aby wykonać rzeczywistą kreślenie. Dokumenty zawierają przykład drukowania danych skalarnych w 3D .
— jorgeca

Odpowiedzi:


13

fa(x,y,z)

Istnieje kilka sposobów wizualizacji tego rodzaju danych i wiele narzędzi, które ci pomogą. Pokażę ci kilka stylów fabuły, które możesz wykonać.

  1. fa(x,y,z)=(const.)

    W Mathematica

    ContourPlot3D[
     Abs[Sin[\[Pi] x] Sin[\[Pi] y] Sin[\[Pi] z]]^2 == 1/2,
     {x, -1, 1}, {y, -1, 1}, {z, -1, 1}]
    

    Pokaż powierzchnie o stałym prawdopodobieństwie 0,2, 0,5 i 0,8:

    ContourPlot3D[
     Abs[Sin[\[Pi] x] Sin[\[Pi] y] Sin[\[Pi] z]]^2,
     {x, -1, 1}, {y, -1, 1}, {z, -1, 1}, Contours -> {0.2, 0.5, 0.8}, 
     ContourStyle -> (Directive[#, Opacity[0.25]] & /@ {Yellow, Orange, Red}), 
     Lighting -> "Neutral", Mesh -> None]
    

  2. Możesz zrobić jakąś wizualizację objętości , prawdopodobnie z wycięciami i krojeniem. Będziesz mógł przypisać kolor i krycie do każdego punktu w 3D. Bardziej zaawansowane narzędzia pozwolą również wybrać funkcję przesyłania.

    imgdata = 
      Table[Abs[Sin[\[Pi] x] Sin[\[Pi] y] Sin[\[Pi] z]]^2, 
        {x, -1., 1, .01}, {y, -1., 1, .01}, {z, -1., 1, .01}];
    
    img = Image3D[imgdata, ClipRange -> {{150, 200}, {0, 100}, {0, 200}}]
    

    Krojenie często pomaga, zwłaszcza jeśli możesz interaktywnie kontrolować, który plasterek ma być wyświetlany.

    Image3DSlices[img, Range[1, 200, 10]]
    

Przykłady te miały służyć jako pomysły na rodzaje wizualizacji, które możesz spróbować stworzyć. Istnieje wiele różnych bezpłatnych i komercyjnych narzędzi, których można użyć do tworzenia wykresów.


9

Tradycyjne podejście do danych opartych na polu skalarnym (temperatura, wielkość prędkości, ciśnienie, gęstość itp.) Wykreślonych w dwóch lub trzech wymiarach przestrzennych wykorzystuje kolor. Ważne jest, aby pamiętać, że wybór schematu kolorów może zniekształcać wrażenia związane z danymi. Z tego powodu nie należy używać schematu kolorów tęczy. (Po co, patrz tutaj , tutaj , tutaj i tutaj .) Niestety tęcza jest domyślnym schematem kolorów w MATLAB i matplotlib.

Jeśli próbujesz wyróżnić zmiany w intensywności, dobrze działa użycie schematu różniącego się nasyceniem, na przykład od białego (zerowa gęstość) do czarnego (maksymalna gęstość). Przejrzystość może również działać dobrze. Trudny problem z wykresami 3D przy użyciu koloru polega na tym, że trzeba spojrzeć na dane z wielu perspektyw, aby uzyskać pełniejszy obraz trendów i funkcji; być może będziesz musiał wydrukować plasterki.


Tak, kolorowy wykres nie da rady, masz rację. Masz pojęcie, jakiej funkcji użyłbym w tym celu?
— rzepa

2
Czy masz na myśli funkcję w Pythonie? Istnieje kilka bibliotek, które działają dobrze przy drukowaniu. Matplotlib jest zwykle używany do wykresów 2D, a nie do wykresów 3D; ggplot i Bokeh mają podobne przypadki użycia. Mayavi2, jak sugeruje jorgeca, nadaje się do drukowania w 3D. Preferuję pakiety oprogramowania do wizualizacji danych 3D, takie jak ParaView lub VisIt. Możesz także spojrzeć na yt (który jest oparty na języku Python) i wykonuje dobrą pracę, drukując dane 3D. Każda opłacalna biblioteka wizualizacji powinna dawać wiele opcji skal kolorów, krycia, nasycenia itp.
— Geoff Oxberry
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.