x = [65, 63, 67, 64, 68, 62, 70, 66, 68, 67, 69, 71]
y = [68, 66, 68, 65, 69, 66, 68, 65, 71, 67, 68, 70]
window, xsize=500, ysize=400, title='Correlation example'
plot, x, y, psym=4, xst=1, xrange=[60, 75], yst=1, yrange=[60, 75], $
xtitle='X-Data', ytitle='Y-Data'
그런데 새로운 그래픽 체계에서는 다음과 같이 PLOT 함수를 사용합니다. 그러면 얻어지는 결과물은 다음 그림과 같습니다.
win = window(window_title='Correlation example', dimensions=[500, 400]) p0 = plot(x, y, symbol='diamond', /sym_filled, linestyle=6, xrange=[60, 75], yrange=[60, 75], $ xtitle='X-Data', ytitle='Y-Data', /current)
어떻습니까? 기존의 그림에 비해서는 꽤 보기 괜찮은 그래픽으로 그림이 그려지는 것을 볼 수 있습니다. 참고로 윈도우를 띄울 경우에도 기존의 window 프로시저와 유사한 기능을 하는 window 함수가 존재합니다. 위의 문구들에 대하여 일일이 세세하게 언급하지는 않겠습니다. 다만 이 플롯의 경우처럼 각 포인트들을 선으로 잇지않고 독립적인 심볼들로만 표현하고자 할 경우 plot 함수내에서 symbol, sym_filled 등과 같은 속성들이 사용되었습니다. 그리고 window 함수로 생성된 윈도우를 현재의(current) 디스플레이로 간주하고 그 위에 플롯을 표출하기 위하여 plot 함수에서 current라는 속성이 사용되었습니다.
이 플롯상에 또 다른 플롯을 추가하여 표출하려면 기존에는 OPLOT 프로시저를 주로 사용했었지만, 새로운 그래픽 체계에서는 그냥 PLOT 함수를 그대로 사용하되 /OVERPLOT 속성을 사용하면 됩니다. 다음과 같이 x, y 자료의 상관관계를 1차식으로 근사한 결과인 yfit이라는 1차원 배열에 대한 플롯을 추가해보면 그 결과는 다음 그림과 같습니다.
result = regress(x, y, yfit=yfit) p1 = plot(x, yfit, thick=3, color='magenta', /overplot)
여기서는 추가 플롯의 색상을 'Magenta'로 설정하였습니다. 이 색상은 이렇게 고유명으로 부여할 수도 있고 [R, G, B]와 같은 형태의 색상값으로 부여할 수도 있습니다. 또한 THICK 속성을 이용하여 선의 두께를 조절할 수도 있습니다.
이와 같은 새로운 그래픽 표출 방식은 내부적으로는 객체 지향의 그래픽 체계를 기반으로 합니다. 물론 이와 같은 체계는 기존에도 존재해왔지만, 그 방법이 좀 까다로운 편이었는데, 이제는 거의 다이렉트 그래픽 체계에서 사용되는 그래픽 관련 프로시저들과 비슷한 수준의 편의성을 갖는다는 점이 가장 큰 강점입니다. 예를 들어, 위의 예제와 같은 결과물을 다른 사람들 앞에서 소개할 때, 처음에는 원래 자료인 x, y의 scatter plot만 보여주고 일정 시간이 지난 후에 1차 근사식에 대한 플롯이 짠~하고 나타나게끔 해줄 수도 있습니다. 이와 같은 효과는 추가 플롯을 그리는 부분 앞에서 WAIT라는 프로시저를 사용함으로써 가능합니다. 만약 5초의 딜레이를 두고자 한다면 다음과 같이 하면 됩니다.
p0 = plot(~~~)
wait, 5
p1 = plot(~~~)
물론 프리젠테이션 전용 프로그램인 파워포인트나 키노트 등을 사용할 때 당연히 되는 기능이지만, 결과물을 IDL로 보여주면서 시연을 할 때에는 나름 유용한 방법인 것 같습니다. 한번 테스트해보시기 바랍니다. 사실 이와 같은 효과는 기존의 다이렉트 그래픽 체계에서는 불가능합니다. 플롯을 추가할 경우 기존의 플롯도 무조건 처음부터 다시 그려야하기 때문입니다. 하지만 객체 기반의 그래픽 체계이기 때문이 이와 같은 효과도 가능해진 것입니다.
'IDL > New Graphics' 카테고리의 다른 글
새로운 그래픽의 Contour 기능 소개 [2] (0) | 2011.06.21 |
---|---|
IDL 8.1로 만들어본 MP4 동영상입니다 (0) | 2011.06.16 |
새로운 그래픽의 Contour 기능 소개 [1] (0) | 2011.06.14 |
새로운 그래픽의 Plot 기능 소개 [3] (0) | 2011.06.06 |
새로운 그래픽의 Plot 기능 소개 [2] (0) | 2011.06.03 |