IDL/New Graphics

기호(Symbol)의 크기 설정

이상우_idl 2022. 12. 6. 14:13
728x90
반응형

IDL에서 그림을 그릴 때 기호 또는 심볼(Symbol)을 사용하는 경우들이 꽤 있습니다. 데이터 포인트들을 기호 형태로 표시하는 경우도 있고, 특정한 위치에 기호를 표시하는 경우도 있습니다. 그런데 이러한 기호(Symbol)의 크기는 통상적으로 SYM_SIZE 속성으로 설정하며 디폴트 크기는 1입니다. 예를 들어 다음과 같이 간단한 플롯 공간을 표시하고 그 안에 사각형 기호를 추가해봅시다.

 

x = FINDGEN(11)
y = x
win = WINDOW(DIMENSIONS=[800, 800], /NO_TOOLBAR)
p = PLOT(x, y, /NODATA, XRANGE=[0, 10], YRANGE=[0, 10], $
  CLIP=0, MARGIN=0.25, /CURRENT)
s = SYMBOL(5, 5, 'square', /SYM_FILLED, SYM_SIZE=1, $
    SYM_TRANSPARENCY=50, SYM_COLOR='tomato', CLIP=0, /DATA)

 

여기서는 800x800의 크기를 갖는 그래픽창을 띄우고 그 안에 간단한 플롯을 표출하였습니다. 이 때 플롯의 상하좌우 여백은 0.25로 설정하였습니다. 그러면 X, Y축 사각형의 가로 및 세로 방향의 크기는 0.5가 됩니다. 참고로 여기서 얘기하는 0.25, 0.5와 값들은 정규화(Normalized)된 값입니다. 즉 그래픽창의 가로 방향을 0~1 그리고 세로 방향도 0~1로 가정하여 환산된 값입니다. 또한 편의상 /NODATA 키워드를 사용함으로써 X, Y 데이터 자체의 모습은 보이지 않고 X, Y축만 보이도록 처리하였습니다. 사각형 기호는 중심 부분에 위치하도록 하였고 크기는 SYM_SIZE 속성에 대하여 디폴트인 1로 설정하였습니다. 표출 결과는 다음 그림과 같습니다.

 

 

그런데 여기서 SYM_SIZE 속성의 1이란 값에 주목을 해봅시다. 만약 이 값을 2, 5, 10 이런 식으로 변경하면 기호의 크기는 더 커질 것이고, 0.5, 0.2 이런 식으로 변경하면 기호의 크기는 더 작아질 것입니다. 예를 들어 SYM_SIZE 속성의 값을 20으로 설정할 경우에는 그 모습은 다음과 같습니다.

 

 

그런데 이 값의 기준은 과연 무엇일까요? 즉 크기 1은 정확히 어떤 의미로 생각하면 될까요? 사실 이 크기는 상대적인 값입니다. 정확히는 그래픽창의 크기를 기준으로 한 정규화된(normalized) 값입니다. 일단 제가 확인해본 바로는 SYM_SIZE의 크기 1은 정규화 값 0.015에 해당되는 것으로 보입니다. 이것을 확인하려면 다음과 같이 SYM_SIZE의 값을 0.5/0.015로 바꿔보면 됩니다.

 

s = SYMBOL(5, 5, 'square', /SYM_FILLED, SYM_SIZE=0.5/0.015, $
    SYM_TRANSPARENCY=50, SYM_COLOR='tomato', CLIP=0, /DATA)

 

이렇게 했을 때의 결과는 다음 그림과 같습니다.

 

 

물론 0.015는 그래픽창의 가로 또는 세로 방향의 크기를 0~1로 가정한 상태의 정규화 값이기 때문에 그래픽창의 절대적인 크기가 달라지더라도 변함은 없습니다. 다만 이 예제에서는 그래픽창의 가로 및 세로 방향의 화소 크기가 800으로 서로 동일합니다. 만약 가로와 세로 방향의 크기가 서로 다른 그래픽창인 경우에는 더 작은 크기가 기준이 됩니다. 즉 예를 들어서 그래픽창의 크기를 800x400으로 설정하고 다시 실행해서 그 모습을 확인해보면 됩니다.

 

x = FINDGEN(11)
y = x
win = WINDOW(DIMENSIONS=[800, 400], /NO_TOOLBAR)
p = PLOT(x, y, /NODATA, XRANGE=[0, 10], YRANGE=[0, 10], $
  CLIP=0, MARGIN=0.25, /CURRENT)
s = SYMBOL(5, 5, 'square', /SYM_FILLED, SYM_SIZE=0.5/0.015, $
    SYM_TRANSPARENCY=50, SYM_COLOR='tomato', CLIP=0, /DATA)

 

그러면 표출 결과는 다음과 같습니다.

 

 

이와 같이 더 작은 세로 방향 크기를 기준으로 맞춰지게 됩니다. 따라서 기호(Symbol)의 크기는 그래픽창의 가로 및 세로 방향 크기 중 더 작은 크기에 대한 0.015배에 해당되는 크기가 SYM_SIZE 속성의 1에 대응된다고 보면 맞을 것 같습니다. 다만 이 0.015라는 값은 제가 확인해본 값이고, 어쩌면 사용자의 디스플레이 환경에 따라 달라질 가능성도 배제할 수 없을 것 같습니다. 따라서 여러분도 여기 소개된 예제 프로그램을 돌려서 테스트를 해보면서 그 값을 확인해보시면 좋을 것 같습니다.

반응형