지난 글에 이어서 IDL 8.0 이상의 버전에서 지원되는 새로운 그래픽 체계를 이용하여 플롯을 그리는 예제를 추가적으로 소개하겠습니다. 일단 결과부터 보여드리면 다음 그림과 같은 플롯을 그려보고자 합니다.
참고로 이 그림은 Chi-Square 분포함수의 형태를 그린 플롯인데, 그 위에 설명을 위하여 텍스트 및 선과 같은 추가적인 요소들이 포함되어 있습니다. 사실 최근에 제가 강의용으로 사용하기 위하여 만든 그림입니다. 그러면 이 그림을 그리기 위한 프로그램의 내용을 보도록 합시다. 그림의 의도는 degree of freedom이 2인 경우에 해당되는 Chi-Square 분포함수상에서 Chi-Square의 값이 3.0일 경우의 Q값의 위치 및 크기를 나타내고 여기에 반대되는 의미를 가진 (1-Q)값의 크기도 함께 나타내는 것입니다.
이 그림을 얻기 위한 예제 코드의 내용을 설명드립니다. 참고로 이 예제 코드는 아래에 첨부해놓았으므로 바로 다운로드받으실 수도 있습니다.
먼저 Chi-Square 분포함수에 해당되는 IDL 함수인 CHISQR_PDF라는 함수를 이용하여 degree of freedom이 2인 경우 0~10까지 범위의 Chi-Square 값들을 배열로 생성합니다.
df = 2; degree of freedom
x = FINDGEN(101)/10
chi = CHISQR_PDF(x, df)
이제 WINDOW 함수를 사용하여 그림을 그릴 적당한 크기의 윈도우를 띄우고 PLOT 함수를 사용하여 플롯부터 그립니다. 색상은 푸른색으로 하고 두께는 2로 설정하였습니다. 그리고 PLOT 함수내에서 /CURRENT 속성을 사용하여 이 선 객체가 앞서 생성한 윈도우상에 그림이 그려지도록 합니다. 이 속성을 사용하지 않을 경우 독립적으로 또 다른 윈도우가 뜨게 됨을 유의하세요.
win = WINDOW(DIMENSIONS=[500, 400])
p = PLOT(x, chi, COLOR='Blue', THICK=2, XTITLE='Chi-Square', YTITLE='Probability', /CURRENT)
설명을 위한 보조선을 그리기 위하여 POLYLINE 함수를 사용합니다. 이 때 선의 시작점 및 끝점의 X좌표값들 및 Y좌표값들을 인자로 주는 것이 중요합니다. 이 방법은 마치 PLOTS 프로시저를 사용할 때와 유사합니다. 이 좌표값들은 플롯상의 좌표계를 따라야하므로 /DATA라는 속성을 사용하였습니다. LINESTYLE 속성을 2로 하면 dashed line이 됩니다. 여기서는 3개의 보조선들을 그리되 색상 및 위치는 다 다릅니다.
설명을 위한 보조 문자열을 삽입하기 위하여 TEXT 함수를 사용합니다. 문자열이 위치할 X, Y 좌표값들이 먼저 인자로 들어가고, 문자열의 내용이 그 다음 인자로 들어갑니다. 여기서는 색상이나 폰트 사이즈 정도만 조정하였지만, 이 TEXT 함수의 도움말을 보면 그 외에 설정 가능한 많은 속성들에 대한 설명이 있으니 참조하시길 바랍니다. 예를 들어, 볼드체가 되도록 하려면 FONT_STYLE이라는 속성을 1 또는 "Bold"라는 문자열로 설정하면 됩니다.
비교적 단순해 보이지만 나름 깔끔한 플롯을 그리는 예제를 소개하였습니다. 8.0부터 도입된 이 새로운 그래픽 체계 상당히 괜찮습니다. 8.0 이상의 버전을 쓰시면서 아직까지 이 기능을 사용해본 적이 없으시다면 한번쯤 관심을 가져보시기 바랍니다. 사용법도 기존의 PLOT, PLOTS, XYOUTS와 같은 명령들보다 전혀 어렵지 않습니다. 그림이 그려진 인터페이스상에서 인쇄 또는 그림파일로의 저장도 바로 가능합니다.