제가 예전에 PLOT3D 함수에서 데이터 포인트의 심볼을 구체(Sphere)로 사용하는 방법에 대하여 소개했던 적이 있었습니다(링크 참조). 그 당시에는 MESH_OBJ라는 과정을 통하여 생성한 폴리곤 객체를 사용하는 약간은 복잡한 방법을 소개했었는데요. 이보다 더 간단한 방법이 있어서 소개해볼까 합니다. 우선 예제로 사용할 데이터는 그 당시와 비슷하게 RANDOMU 함수를 사용하여 다음과 같이 생성해봅시다.
n = 10
x = RANDOMU(seed, n)*10
y = RANDOMU(seed, n)*10
z = RANDOMU(seed, n)*10
이제 PLOT3D 함수를 사용할 차례인데요. 방법은 다음과 같이 SYM_OBJECT 키워드에 ORB()라는 것을 부여하는 방식입니다. 그리고 SYM_COLOR, SYM_SIZE 등을 사용하여 색상 및 크기 등을 설정해주면 됩니다. 참고로 언급하면, 그냥 SYMBOL 키워드를 사용할 경우에는 평면적인 심볼로만 구현이 되는 반면, 지금과 같이 하면 입체적인 형태의 구체가 심볼로서 사용되는 효과를 얻을 수 있습니다. 즉, 다음과 같은 그림을 얻을 수있습니다.
win = WINDOW(DIMENSIONS=[600, 500])
pl = PLOT3D(x, y, z, LINESTYLE='none', CLIP=0, AXIS_STYLE=2, $
SYM_OBJECT=ORB(), SYM_COLOR='blue', SYM_SIZE=2, /CURRENT)
여기서 사용한 ORB라는 것은 IDL 자체에 내장된 일종의 구체 폴리곤 생성용 함수라고 보면 됩니다. 혹시라도 이 함수의 소스코드의내용이 궁금할 경우에는 콘솔창에서 다음과 같은 명령을 실행해보면 그 내용을 볼 수 있습니다. 물론 지금 이 작업에 있어서는 이러한세부 내용을 필수적으로 봐야 할 필요는 없습니다.
IDL> .edit orb__define.pro
그리고 이렇게 데이터 포인트를 구체로 구현하는 것외에도, XY 평면상에 마치 그림자와 같은 효과를 주는 것도 가능합니다. 다음과 같이 SYMBOL 키워드를 사용하여 평면적인 원형 심볼을 바닥에 구현하는 방식으로 작업하면 됩니다. 이렇게 하면 다음과 같은 그림을 얻을 수 있습니다.
plo = PLOT3D(x, y, z*0, LINESTYLE='none', CLIP=0, /OVERPLOT, $
SYMBOL='circle', SYM_COLOR='gray', /SYM_FILLED, SYM_SIZE=2)
오늘 언급한 내용은 IDL의 제작사 웹페이지에 소개된 내용을 토대로 하였음을 밝혀둡니다. 원문의 링크도 아래에 소개합니다.
'IDL > New Graphics' 카테고리의 다른 글
ELLIPSE 함수의 사용에 있어 주의할 점 (0) | 2016.04.28 |
---|---|
ASPECT_RATIO 속성의 이해 (내용 일부 수정 있음) (0) | 2016.04.27 |
NG체계에서 다중 플롯 그리기 (Multi-Plot in NG) [2] - 업데이트! (0) | 2016.02.22 |
NG체계에서 다중 플롯 그리기 (Multi-Plot in NG) [1] (0) | 2016.02.17 |
CLIP 속성의 이해와 응용 [1] (0) | 2016.01.29 |