4D 플롯의 표면을 어떻게 플롯합니까?


11

3D 상자에서 입자의 파동 함수를 플로팅하려고합니다. 이를 위해서는 4 개의 변수 x, y, z 축 및 확률 밀도 함수를 플롯해야합니다.

확률 밀도 함수는 다음과 같습니다.

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

내가 사용하고 np.arange()있는 X, Y 및 Z를위한

나는 이것을하기 위해 4D 플롯의 표면을 플롯해야한다는 것을 읽었습니다. 다음과 같이 보입니다.

여기에 이미지 설명을 입력하십시오


3
확률 밀도를 나타 내기 위해 색상을 사용하는 것은 어떻습니까?
Shuhao Cao

불투명도가 이런 종류의 음모에 잘 작동한다고 생각합니다. 각 플롯의 서로 다른 관점을 제공해야 할 수도 있지만 입자가있을 가능성이있는 위치에서 플롯을 더 불투명하게 만들면이 데이터를 잘 시각화 할 수 있습니다.
Godric Seer

2
numpy를 사용하는 것처럼 보이기 때문에 mayavi 를 사용 하여 실제 플로팅을 수행 할 수 있습니다 . 이 문서에는 스칼라 데이터를 3D플로팅 하는 예가 있습니다.
jorgeca

답변:


13

이것은 실제로 4D 데이터가 아닙니다. Geoff가 말했듯이 3D 스칼라 데이터입니다. 즉, 세 가지 변수의 스칼라 함수를 시각화합니다 : .f(x,y,z)

이러한 종류의 데이터를 시각화하는 몇 가지 방법과 도움이되는 많은 도구가 있습니다. 당신이 만들 수있는 몇 가지 스타일의 플롯을 보여 드리겠습니다.

  1. 투명도를 가진 하나 이상의 표면을 표시하는 등고선 그림 .f(x,y,z)=(const.)

    Mathematica에서

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

    일정한 확률 0.2, 0.5 및 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. 컷 아웃 및 슬라이싱을 통해 일부 유형의 볼륨 시각화를 수행 할 수 있습니다 . 3D의 각 포인트에 색상과 불투명도를 지정할 수 있습니다. 고급 도구를 사용하면 전송 기능을 선택할 수도 있습니다.

    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}}]
    

    슬라이싱은 특히 표시 할 슬라이스를 대화식으로 제어 할 수있는 경우에 특히 도움이됩니다.

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

이 예제는 어떤 유형의 시각화를 만들 수 있는지에 대한 아이디어로 사용되었습니다. 플롯을 만드는 데 사용할 수있는 다양한 무료 및 상용 도구가 있습니다.


9

스칼라 필드 기반 데이터 (온도, 속도 크기, 압력, 밀도 등)에 대한 기존의 접근 방식은 색을 사용합니다. 색 구성표를 선택하면 데이터에 대한 인상이 왜곡 될 수 있습니다. 이러한 이유로 무지개 색 구성표를 사용하지 마십시오. (이유, 여기 , 여기 , 여기여기를 참조하십시오 .) 불행하게도, 무지개는 MATLAB 및 matplotlib의 기본 색 구성표입니다.

강도의 변화를 강조하려는 경우 채도가 다른 체계를 사용하면 흰색 (제로 밀도)에서 검은 색 (최대 밀도)에 이르는 것과 같이 잘 작동합니다. 투명도 잘 작동 할 수 있습니다. 색상을 사용할 때 3D 플롯에서 까다로운 문제는 트렌드와 기능을 더 잘 파악하기 위해 여러 관점에서 데이터를 살펴 봐야한다는 것입니다. 슬라이스를 플롯해야 할 수도 있습니다.


예, 컬러 플롯은 그렇지 않습니다. 맞습니다. 어떤 종류의 기능을 사용할까요?
순무

2
파이썬에서 함수를 의미합니까? 플로팅에 잘 작동하는 라이브러리가 몇 개 있습니다. Matplotlib는 일반적으로 3D 플롯이 아닌 2D 플롯에 사용됩니다. ggplot과 Bokeh의 사용 사례는 비슷합니다. jorgeca가 제안한 것처럼 Mayavi2는 3D 플로팅에 적합합니다. ParaView 또는 VisIt과 같은 3D 데이터 시각화를위한 소프트웨어 패키지를 선호합니다. yt (파이썬 기반)를 볼 수도 있고 3D 데이터를 잘 작성하는 것도 좋습니다. 가치있는 시각화 라이브러리는 색상 스케일, 불투명도, 채도 등에 대한 다양한 옵션을 제공해야합니다.
Geoff Oxberry
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.