플롯(Plot) 계열의 그림을 그릴 때 X, Y축에는 일정 간격의 눈금값들이 표기됩니다. 예를 들어 다음과 같이 x, y 데이터를 사용하여 간단한 플롯을 하나 그려 봅시다.
x = FINDGEN(101)
y = x^2
win = WINDOW(DIMENSIONS=[600, 500])
p = PLOT(x, y, COLOR='orange red', THICK=2, /CURRENT)
여기서 사용된 예제 데이터의 값 범위는 x가 0~100이고 y는 x^2이므로 0~10000입니다. 표출된 플롯에서는 X, Y축의 눈금들이 적정한 간격으로 알아서 매겨지게 됩니다. 그 모습은 다음 그림과 같습니다.
그런데 이번에는 두번째 줄의 내용만 다음과 같이 수정하여 y를 x^2이 아니라 x^3으로 대체해 봅시다.
y = x^3
그러면 y의 값 범위는 0~1000000이 될텐데요. 이 상태로 플롯을 표출해보면 그 모습은 다음과 같습니다.
얼핏 보면 별다른 이상은 없지만 좀전과 비교했을 때 눈에 띄는 변화라면 Y축의 눈금값들이 지수 형태가 되었다는 점입니다. 어차피 자릿수가 커지게 되면 IDL이 알아서 이렇게 표기를 합니다. 그 경계가 어딘지는 잘 모르겠으나 아마 100000 정도일 것으로 추측은 됩니다. 그런데 이와 같이 자동으로 지수 형태로 표기하는 대신 그 포맷을 내가 직접 정하고 싶을 경우도 있습니다. 자릿수가 좀 많다 하더라도 Y축 눈금의 최대값이 그냥 1000000과 같은 형태로 표기되도록 하고 싶을 경우에는 어떻게 해야 할까요? 이런 경우에는 눈금값의 포맷을 별도로 설정해야 하는데 이를 위하여 [XYZ]TICKFORMAT이라는 속성을 사용하면 됩니다. 다음과 같이 PLOT 함수에서 이러한 속성을 추가적으로 사용해 봅시다.
x = FINDGEN(101)
y = x^3
win = WINDOW(DIMENSIONS=[600, 500])
p = PLOT(x, y, COLOR='crimson', THICK=2, YTICKFORMAT='(I0)', $
/CURRENT)
여기서 사용된 포맷 코드를 보면 '(I0)'으로 되어 있는데 이러한 포맷 코드에 관한 설명은 제가 올렸던 이 게시물의 내용을 참조하시기 바랍니다. 어쨌든 그 결과는 다음 그림과 같습니다. 눈금값들이 정수 형태로 표기되어 있음을 확인할 수 있습니다.
포맷 코드를 다른 방식으로 설정하면 눈금값들을 또 다른 형식으로 표기할 수도 있습니다. 다음과 같이 포맷 코드를 '(F0.1)'로 설정하면 눈금값들이 소수점 한 자리인 실수 형태로 표기됩니다.
p = PLOT(x, y, COLOR='crimson', THICK=2, YTICKFORMAT='(F0.1)', $
/CURRENT)
그 결과는 다음 그림과 같습니다.
실수 표기용 포맷 코드에서 F 대신 다음과 같이 E 기술자를 사용하는 것도 가능합니다.
p = PLOT(x, y, COLOR='crimson', THICK=2, YTICKFORMAT='(E0.1)', $
/CURRENT)
이 경우에는 다음과 같은 형태로 표기가 됩니다.
참고로 E 기술자는 의도적으로 실수를 일종의 지수형으로 표기하는 포맷 코드를 만들 때 사용합니다. 지수형 표기는 이렇게 하는 것도 가능하고 그냥 우리가 흔히 보는 10과 첨자를 표기하는 방식도 가능합니다. 다만 이런 표기를 의도적으로 하고자 할 경우에는 다음과 같이 TICKFORMAT 대신 TICKUNITS 속성을 사용해야 합니다. 설명을 위하여 다음 예제코드에서는 앞서 우리가 처음에 봤던 예제 데이터 즉 y가 x^2이 되어서 그 범위가 0~10000인 데이터를 사용하였습니다. 원래대로라면 플롯상에서 Y축의 눈금 최대값이 그냥 10000으로 표기되었겠지만, 다음과 같이 YTICKUNITS 속성을 따로 사용함으로써 의도적으로 지수 형태로 표기해 보았습니다.
p = PLOT(x, y, COLOR='crimson', THICK=2, YTICKUNITS='exponent', $
/CURRENT)
그 결과는 다음 그림과 같습니다.
이와 같이 플롯을 그릴 때 축 자체의 세부 속성들을 제어하기 위한 기능들이 몇몇 있으므로 잘 확인해두시면 좋습니다. 이러한 속성들은 그 명칭이 모두 [XYZ]TICK~~~와 같습니다. 그리고 오늘 소개한 내용은 NG 체계의 PLOT 함수를 사용하는 경우에 해당되는데, DG 체계의 PLOT 프로시저의 경우도 거의 유사한 방식으로 적용된다는 사실도 알아두시면 좋을 것 같습니다.
'IDL > New Graphics' 카테고리의 다른 글
NG 체계에서 지도상에 이미지를 중첩할 때 격자가 어긋나는 현상에 관하여 (4) | 2017.10.27 |
---|---|
SCATTERPLOT3D 함수 소개 및 사용법 예제 (0) | 2017.10.11 |
PDF, EPS, PS 저장에 관하여 (NG 체계) (0) | 2017.05.13 |
NG 체계에서 축(Axis)의 세부 조정 예제 (0) | 2017.04.29 |
IMAGE and CONTOUR in NG [1] (0) | 2017.04.07 |