IDL/New Graphics

축(Axis)의 범위 뒤집기

이상우_IDL 2025. 10. 1. 16:31
728x90

IDL에서 X축 및 Y축으로 구성되는 그림을 표출하는데 있어서 축의 범위를 직접 설정해야 하는 경우는 자주 있습니다. 그런데 이러한 축의 범위 자체를 아예 뒤집어야 하는 경우도 가끔 있습니다. 예를 들면 X축의 범위가 0~100으로 설정되어 있는데 이를 100~0이 되도록 하는 경우입니다. 물론 이러한 설정 방법은 매우 간단합니다. 몇가지 예제들을 통하여 이러한 방법들을 살펴봅시다.

 

먼저 플롯 계열의 그림을 표출하는 경우부터 보겠습니다. 예제 데이터를 간단하게 생성하고 기본적인 표출만 먼저 해보면 그 과정 및 결과 그림은 다음과 같습니다.

 

x = FINDGEN(101)
y = SQRT(x)
win = WINDOW(DIMENSIONS=[600, 500], /NO_TOOLBAR)
p = PLOT(x, y, COLOR='tomato', THICK=3, $
  FONT_SIZE=11, MARGIN=0.1, /CURRENT)

 

 

이 그림을 보면 X축의 범위는 0~100이고 Y축의 범위는 0~10입니다. 그러면 X축의 범위를 뒤집어봅시다. 이를 위해서는 PLOT 함수에서 XRANGE 속성을 추가하여 다음과 같이 사용하면 됩니다.

 

p = PLOT(x, y, COLOR='tomato', THICK=3, $
  XRANGE=[100, 0], $
  FONT_SIZE=11, MARGIN=0.1, /CURRENT)

 

이와 같이 XRANGE 속성을 [100, 0]으로 설정하면 X축의 범위가 뒤집히게 됩니다. 그 결과는 다음 그림과 같습니다.

 

 

마찬가지 요령으로 Y축도 뒤집을 수 있습니다. 다음과 같이 비슷한 요령으로 YRANGE 속성을 [10, 0]으로 설정하면 됩니다.

 

p = PLOT(x, y, COLOR='tomato', THICK=3, $
  XRANGE=[100, 0], YRANGE=[10, 0], $
  FONT_SIZE=11, MARGIN=0.1, /CURRENT)

 

이렇게 하면 X축 및 Y축 모두 범위가 뒤집히는 효과를 얻게 되며 결과는 다음 그림과 같습니다.

 

 

이러한 설정은 위와 같이 플롯 그림을 생성할 때 PLOT 함수 내에서 해줄 수도 있고, 그림 생성 후 후속 설정도 가능합니다. 즉 다음과 같은 방식으로 처리해도 결과는 동일합니다.

 

p = PLOT(x, y, COLOR='tomato', THICK=3, $
  FONT_SIZE=11, MARGIN=0.1, /CURRENT)

p.XRANGE = [100, 0]

p.YRANGE = [10, 0]

 

그리고 경우에 따라서는 축의 범위를 직접 지정하지 않고 그냥 IDL에 맡겨두는 경우도 있습니다. 이런 상황에서는 그 축의 범위값을 사전에 알 수 없는 상태가 되는데 이러한 상황에서도 축 범위를 뒤집으려면 바로 위에서 본 것과 같이 후속 설정을 하는 방식으로 처리해야 합니다. 예를 들면 다음과 같이 또 다른 예제 데이터를 정의하고 플롯을 표출해봅시다.

 

x = FINDGEN(101)
y = SIN(SQRT(x)*2)+RANDOMU(-1, 101)*1.5
win = WINDOW(DIMENSIONS=[600, 500], /NO_TOOLBAR)
p = PLOT(x, y, COLOR='indigo', THICK=3, $
  FONT_SIZE=11, MARGIN=0.1, /CURRENT)

 

 

이 예제에서는 X축 및 Y축 모두 사전에 유저가 축 범위를 직접 지정하지는 않았습니다. 만약 이러한 그림을 표출하는데 있어서 특정한 축의 범위를 뒤집고자 한다면, 표출된 플롯 개체로부터 해당 축의 범위 정보를 추출하여 범위값을 뒤집는 방식으로 처리하면 됩니다. 즉 다음과 같은 내용을 추가하면 됩니다.

 

yrn = p.YRANGE
p.YRANGE = [yrn[1], yrn[0]]

 

이러한 내용까지 추가로 실행하면 결과는 다음 그림과 같습니다.

 

 

그리고 이와 같은 처리 방식은 플롯 계열의 다른 그래픽 함수들(BARPLOT, SCATTERPLOT, PLOT3D 등)에서도 마찬가지로 적용이 가능합니다. 또한 CONTOUR, IMAGE 등과 같은 2차원 데이터 표출용 그래픽 함수들에서도 적용이 가능한데요. 예를 들어 IMAGE 함수에서 이러한 처리 방법을 사용하는 예제를 보면 다음과 같습니다.

 

data = HANNING(600, 600)*100 
add = FLTARR(600, 600)
add[300, 300] = HANNING(300, 300)*50
data = data+add
win = WINDOW(DIMENSIONS=[600, 600], /NO_TOOLBAR)
i = IMAGE(data, RGB_TABLE=74, $
  AXIS_STYLE=2, MARGIN=0.1, /CURRENT)

 

여기서는 가상의 2차원 데이터를 생성한 후 IMAGE 함수에 투입하여 표출하는데 있어서 AXIS_STYLE 키워드의 값을 2로 설정함으로써 이미지가 X축 및 Y축과 함께 표시되도록 하였습니다. 표출 그림을 보면 다음과 같습니다.

 

 

여기서 X축 및 Y축의 범위를 모두 뒤집어봅시다. 요령은 앞선 예제들과 동일합니다. 즉 IMAGE 함수가 사용된 내용만 다음과 같이 수정하면 됩니다.

 

i = IMAGE(data, RGB_TABLE=74, $
    XRANGE=[600, 0], YRANGE=[600, 0], $
    AXIS_STYLE=2, FONT_SIZE=11, MARGIN=0.1, /CURRENT)

 

결과는 다음 그림과 같습니다.

 

 

 

 

* 이 글이 도움이 되었다면 게시물에 대하여 공감 버튼(하트 모양) 클릭 및 블로그 구독도 해주시면 더 큰 힘이 됩니다. 감사합니다.

LIST