IDL/New Graphics

LEGEND 함수의 효과적인 사용법

이상우_IDL 2014. 5. 28. 22:37
728x90

NG 체계에서 플롯을 동시에 여러개 그릴 경우, 각 플롯마다 어떤 자료에 해당되는지를 알려주는 범례(Legend)를 표시하기 위하여 사용되는 LEGEND라는 그래픽 함수가 있습니다. 예를 들어, 아래와 같이 삼각함수 SIN 및 COS에 해당되는 플롯들을 하나의 공간상에 중첩하여 그리는 경우 각각의 플롯이 어떤 삼각함수를 나타내는가를 나타내는 범례를 LEGEND 함수로 나타낼 수 있습니다. 이 예제 프로그램을 돌리면 그 결과는 다음 그림과 같은 모습으로 나타납니다.

 

x = FINDGEN(37)*10
y1 = SIN(x*!DTOR)
y2 = COS(x*!DTOR)
win = WINDOW(DIMENSIONS=[600, 500])
p1 = PLOT(x, y1, SYMBOL='square', SYM_THICK=2, NAME=' SINE', COLOR='blue', $
  XRANGE=[0, 360], MARGIN=[0.1, 0.1, 0.1, 0.2], /CURRENT)
p2 = PLOT(x, y2, SYMBOL='diamond', SYM_THICK=2, NAME=' COSINE', COLOR='red', /OVERPLOT)
lg = LEGEND(TARGET=[p1, p2], /AUTO_TEXT_COLOR)

 

 

 

 

그런데 이 예제에서와 같이 심볼(Symbol)이 들어간 플롯의 경우, LEGEND 함수로 나타낸 범례의 모습을 보면 각 심볼들이 선상에 세 개씩 등장합니다. 이런 모습도 나쁜건 아닌데요. 각 항목마다 심볼만 하나씩 깔끔하게 나타내고 싶을 경우가 있습니다. 이렇게 하고자 한다면, LEGEND 함수를 사용할 때 다음과 같은 속성들을 추가해주면 됩니다. 그러면 아래 그림과 같은 모습을 얻을 수 있습니다.

 

lg.SAMPLE_WIDTH = 0
lg.HORIZONTAL_SPACING = 0.1

 

 

 

 

물론 플롯 자체가 심볼을 갖고 있지 않고 그냥 선(Line)으로만 그려진 경우에는 굳이 이렇게 할 필요는 없습니다. 심볼이 들어가는 플롯일 경우에만 유효한 방법이라는 점만 유념하시면 되겠습니다. 참고로 이 내용은 제가 자주 들어가서 보고 있는 IDL Datapoint라는 블로그에 최근에 올라왔던 게시물의 내용을 참조한 것입니다. 이 블로그는 IDL의 본사인 ExelisVis의 기술진들이 IDL과 관련된 각종 기술적인 팁들을 소개하는 게시물들이 자주 올라오는데요. 물론 내용의 수준이 아주 쉽지만은 않지만, 꽤 괜찮은 팁들이 종종 올라오는 편이라 저는 자주 체크하고 있습니다. 그래서 여기 올라오는 내용들 중에 여러분들에게 소개할만한 내용이 보이면 이렇게 제 블로그에도 올리고 있습니다. 저도 새롭게 배우는 내용들도 좀 있는 편이어서, 향후에도 흥미로운 내용이 보이면 이 블로그를 통하여 종종 소개를 해보도록 하겠습니다. 오늘 소개한 내용이 담긴 게시물은 5월 22일자로 올라온 내용이고, 원문 링크는 여기를 누르면 볼 수 있습니다. 그리고 오늘 소개된 예제코드도 첨부파일로 함께 올려봅니다.

 

test_legend.pro

 

test_legend.pro
0.0MB
LIST