Object 인자를 사용하는 New Graphics 키워드

이상우 박사의 블로그를 보니 “contour 함수에 라벨문자 변경하기(링크)“라는 새 글이 올라왔습니다.  등치선의 레이블을 원하는 문자열로 지정할 때, IDLgrText 라는 오브젝트 그래픽 요소로 지정해 주어야 한다는 내용의 글입니다. Object Graphics를 약간이라도 사용하는 사용자에게는 이러한 설정 방법은 “무조건 불편함” 보다는 “상황에 따라 유연함”으로 인식될 수도 있는 내용입니다. 물론 제가 댓글을 썼듯이, “Direct Graphics 비슷하게 잘 만들어 놓고 왜 뜬금 없이 Obj_new()를 등장시키나”하는 의아함도 있습니다만, 조금 특이한 상황의 등치선도를 만들 계획이라면, Object Graphics의 요소를 이용하여 보다 다양한 설정을 할 수 있습니다.

IDLgrText의 다양한 설정 활용

IDLgrText의 다양한 설정 활용

위 예제와 같이 BASELINE이라는 IDLgrText 객체 속성을 이용하여, 레이블이 등치선에 수직으로 늘어서는 설정도 할 수 있습니다. 다양한 설정이 가능해진다는 장점을 아주 무시할 수는 없을 것 같습니다.

이와 유사한 느낌으로 PLOT이나 PLOT3D 함수를 사용할 때 SYM_OBJECT 키워드를 설정하면, Object Graphics의 컴포넌트를 심볼로 사용할 수 있습니다. 이 얘기가 의미하는 것은  결국, 어떤 모양의 심볼이든지 만들어서라도 사용할 수 있다는 얘기입니다. 예제를 보시죠.

 

SYM_OBJECT에 오브젝트 그래픽스 컴포넌트 사용

SYM_OBJECT에 오브젝트 그래픽스 컴포넌트 사용

cow10.sav 파일에는 소 모양의 폴리곤 정보가 들어 있습니다. 이를 이용하여 IDLgrPolygon Object를 생성하고, 이 Object를 플롯의 심볼로 설정할 수 있습니다. 단순 컴포넌트 뿐 아니라 IDLgrModel 객체도 가능하므로(단순 컴포넌트들이 여러개 모여 조립된 것이라고 이해하시면 됩니다) 얼마든지 복잡한 심볼도 만들 수 있습니다. 물론, 많은 점을 찍을 때 이런 복잡한 심볼을 사용하면 비효율적이긴 하지만, 필요에 따라서 좋은 시각효과를 낼 수 있는 가능성이 열려 있습니다.

이와같이 SYM_OBJECT를 이용하여 복잡하거나 흔치 않은 심볼을 사용할 수도 있지만, PLOT이나 PLOT3D 함수는 SYMBOL 키워드가 따로 있어 흔히 사용되는 유용한 심볼들(+, *, . 등의 기호는 물론 다이아몬드, 삼각형, 별, 원 등)을 간단히 사용할 수도 있지요. 이 점은 Direct Graphics의 체계에 매우 근접해 있습니다. 즉, Symbol 키워드로 익숙한 심볼 설정 방법이 기본 제공되고, 거기에 Object를 이용할 수 있는 유연한(사용법은 조금 더 복잡하더라도) 방법을 추가로 제공하는 셈입니다.
그런 면에서 Contour 등치선 레이블도 Direct Graphics 체계와 비슷한 사용법이 함께 제공된다면 좋을 것 같습니다. 일반적인 상황에서는 간단하게 설정해 쓰고, 특이한 상황에서는 조금 번거롭더라도 다양한 설정이 가능한 방법을 쓰면 될 테니까요.

제가 얘기한다고 그렇게 될까요? 이상우 박사께서 이미, “너네 이거 왜 이렇게 만들었냐”고 ExelisVIS에 문의를 한 상태라고 하니 기다려 보시죠.