오늘은 우리가 IDL에서 그래픽 표출을 하는데 있어서 이해해두면 좋을만한 CLIP이라는 속성에 관하여 언급을 해보려고 합니다. 이 속성은 특히 XYZ축과 같은 Axis 기반의 공간상에 표출되는 방식의 그래픽 표출에 있어서, 축의 범위내에서만 보여줄 것인지 아니면 축의 범위 외곽에서도 보여줄 것인지를 결정합니다. 그런데 사실 이러한 속성이 존재한다는 것 자체를 알지 못하는 상태에서 작업을 하게 되는 경우도 많습니다. 예를 보면서 알아보기 위하여, 다음과 같이 Sine 곡선을 간단하게 그려봅시다.
x = FINDGEN(46)*8
y = SIN(x*!DTOR)
win1 = WINDOW(DIMENSIONS=[600, 500])
pl1 = PLOT(x, y, SYMBOL='circle', /SYM_FILLED, COLOR='green', LINESTYLE=6, $
XRANGE=[0, 360], XTICKINTERVAL=90, YRANGE=[-0.9, 0.9], /CURRENT)
우리가 Sine이나 Cosine 곡선을 그리는데 있어서는 통상적으로 여기서는 X축의 범위를 0~360, Y축의 범위를 -1~+1로 설정하는 방식을 사용하는 경우가 많습니다. 하지만 여기서는 Y축의 범위를 -0.9~+0.9로 약간 좁게 설정하였습니다. 따라서 이 경우에는 다음과 같은 그림을 얻게 됩니다.
이 그림을 보면, 설정된 Y축의 범위를 벗어나는 값들은 아예 표시가 안되어 있습니다. 이것이 바로 CLIP 속성의 역할인데, 기본 설정은 CLIP=1입니다. 즉, 축의 안쪽에 존재하는 데이터들만 표출하고, 외곽에 있는 것들은 철저히 무시하는 것이 기본 설정입니다. 따라서 위의 예제코드에서는 굳이 CLIP=1이란 표현은 사용하지 않았습니다. 그런데 이러한 기본 설정을 무시하는 것도 가능합니다. 이를 위해서는 다음과 같이 CLIP 속성을 0으로 설정하면 됩니다. 물론 이러한 설정은 다음과 같이 플롯 개체 생성 이후에 할 수도 있고, 아니면 플롯 개체 생성시 CLIP=0이라는 키워드까지 추가 사용하는 방식이어도 됩니다.
pl1.CLIP = 0
어쨌든 이렇게 설정할 경우에는 다음과 같은 그림을 얻게 됩니다. 즉, 정해진 축 범위의 외곽에 있는 데이터들도 모두 표출하게 됩니다.
우리가 이와 같은 표출 작업을 하는데 있어서, 가시화의 범위를 축 안쪽으로만 한정지을 것인지 아니면 축 외곽 부분도 허용할 것인지에 대한 판단 여부는 케이스마다 다릅니다. 통상적으로는 기본 설정에 따라 축 범위 안쪽으로만 한정짓는 것이 좋지만, 때에 따라서는이러한 제한을 풀어주는 것이 좋을 수도 있습니다. 예를 들면, 위와 같은 Sine 곡선을 그냥 통상적인 방식으로 표출할 경우, 특히 Y축의 범위를 -1~+1로 설정하는 경우를 봅시다. 그리고 이번에는 원형 심볼의 크기를 좀 더 키워봅시다. 이렇게 하면 다음과 같은 그림을 얻게 됩니다.
win2 = WINDOW(DIMENSIONS=[600, 500])
pl2 = PLOT(x, y, SYMBOL='circle', /SYM_FILLED, $
COLOR='deep pink', LINESTYLE=6, $
XRANGE=[0, 360], XTICKINTERVAL=90, $
YRANGE=[-1, 1], SYM_SIZE=2, /CURRENT)
그림 자체는 무난합니다. 그런데 자세히 보면 축 범위의 경계에 해당되는 부분들에서는 원형 심볼의 형태가 축의 경계에 맞춰 정확히 잘린 모습이 눈에 띕니다. CLIP의 기본적인 설정하에서는 당연한 일입니다. 그런데 이러한 경계 부근의 심볼들도 제 모습으로 보이도록 하고자 한다면, 다음과 같이 CLIP=0 속성을 추가적으로 설정해주면 됩니다. 그러면 다음 그림에서와 같이 축 외곽으로 약간씩 벗어나는 심볼의 일부분도 제대로 보이게 됩니다.
pl2.CLIP = 0
그래서 앞서도 언급했듯이 이 CLIP 속성에 대한 설정은 표출 작업의 성격에 따라서 작업자가 재량껏 적절히 판단하여 사용하면 됩니다. 다만 중요한 것은 IDL에서는 항상 CLIP 속성이 활성화된 상태로 표출하는 것이 기본이라는 점을 미리 인지해두는 것입니다. 참고로 NG가 아닌 DG 체계의 경우에는 이러한 속성을 제어하는 키워드가 CLIP이 아니라 NOCLIP입니다. 따라서 DG에서는 NOCLIP=0이 기본 설정이고, 이 설정과 다르게 작업하려면 NOCLIP=1이라는 키워드를 사용하면 된다는 점을 참조적으로 언급해 둡니다.
'IDL > New Graphics' 카테고리의 다른 글
NG체계에서 다중 플롯 그리기 (Multi-Plot in NG) [2] - 업데이트! (0) | 2016.02.22 |
---|---|
NG체계에서 다중 플롯 그리기 (Multi-Plot in NG) [1] (0) | 2016.02.17 |
Animation GIF의 제작 예제 (NG 기반) (0) | 2016.01.25 |
플롯위에 이미지 중첩하기 (0) | 2016.01.06 |
에러바(Error Bar)의 표출 (0) | 2015.12.17 |