IDL/New Graphics

색상을 채운 플롯(Filled Plot)의 표출 [3]

이상우_IDL 2025. 11. 5. 15:33
728x90

IDL에서 플롯의 선(Line) 사이를 색상으로 채워서 표출하는 기능을 담당하는 FILLPLOT 함수는 IDL 8.7.2 버전부터 지원되기 시작하였으며 이 함수의 사용법 및 예제는 이미 관련 게시물들(링크1, 링크2)을 통하여 소개한 바 있습니다. 오늘은 FILLPLOT 함수를 사용하는 또 다른 방식에 대한 예제들을 소개해보고자 합니다. 일단 FILLPLOT 함수의 기본적인 사용법은 앞서 언급된 링크들을 참조하는 것으로 하고 시작해봅니다. 먼저 예제로 사용할 데이터를 다음과 같이 생성합니다.

 

x = [0:2:0.01]
y1 = FLTARR(N_ELEMENTS(x))
y2 = 1.2*SIN(4*!pi*x)

 

여기서는 0부터 2까지 0.01의 간격을 갖는 201개의 실수형 값들로 구성된 x를 생성하고 이를 바탕으로 y1 및 y2 배열들을 생성하였습니다. 그래서 y1에 대한 플롯 선과 y2에 대한 플롯 선의 사이를 색상으로 채운 플롯을 FILLPLOT 함수로 구현하고자 합니다. 그 과정은 다음과 같습니다.

 

win = WINDOW(DIMENSIONS=[800, 600], /NO_TOOLBAR)
p = FILLPLOT(x, [[y1], [y2]], THICK=2, $
  COLOR='navy', FILL_COLOR='violet', $
  FONT_SIZE=11, MARGIN=0.1, /CURRENT)

 

여기서는 각 플롯의 선은 navy 색상으로 처리하고 사이를 채우는 색상은 violet 색상으로 처리하였습니다. 이러한 과정에 의하여 표출되는 그림은 다음과 같습니다.

 

 

이 그림을 보면 플롯 y1과 y2 사이가 지정된 색상으로 채워진 모습이며 당연히 우리가 의도했던 결과이기도 합니다. 그런데 이러한 표출에 있어서 특정한 조건에 따라서 채워지는 색상이 다르게 처리해보는 것은 어떨까요? 예를 들면 이 그림에서 사인(Sine) 곡선인 y2가 수평선인 y1보다 값이 큰 부분과 작은 부분이 서로 다른 색상이 되도록 해보려는 것입니다. 일단 FILLPLOT 함수 자체로는 이와 같이 조건에 따라서 색상을 다르게 처리하는 기능은 갖고 있지는 않습니다. 다만 약간의 추가적인 작업을 통하여 이러한 방식의 표출을 해볼 수 있습니다. 그 방법을 지금부터 살펴봅시다.

 

먼저 새로운 색상으로 채워질 부분을 선별하기 위한 조건을 "y2의 값이 y1의 값보다 크거나 같다"라고 간주해봅시다. 이러한 선별을 위하여 다음과 같이 WHERE 함수를 사용합니다.

 

ww = WHERE(y2 GE y1, count, COMPLEMENT=wn)

 

여기서 얻어지는 ww는 앞서 제시한 선별 조건을 만족하는 인덱스들이 되는 반면 wn은 조건에 부합되지 않는 인덱스들이 됩니다. 그래서 이 wn을 다음과 같이 활용합니다.

 

y1f = y1
y1f[wn] = y2[wn]

 

여기서는 y1을 그대로 복제한 y1f에 대하여 wn에 해당되는 위치의 값들을 모두 y2의 같은 위치의 값들로 대체하였습니다. 그 다음에는 FILLPLOT 함수를 다음과 같이 사용합니다. 다만 이번에는 y1 대신 y1f를 사용한다는 차이가 있습니다.

 

po = FILLPLOT(x, [[y1f], [y2]], THICK=2, $
    COLOR='navy', FILL_COLOR='lime', /OVERPLOT)

 

이렇게 하면 앞서 지정한 조건에 부합하는 부분들만 새로운 색상으로 채워진 플롯이 기존의 플롯 공간 내에 중첩되어 표출될 것입니다. 실제로 표출된 결과를 보면 다음 그림과 같습니다.

 

 

따라서 이와 같은 방식으로 작업을 하면 우리가 의도했던 결과를 얻을 수 있습니다. 이번에는 데이터만 살짝 바꿔봅시다. 즉 위의 내용은 그대로 두고 y1만 기존의 수평선 형태의 데이터 대신 다음과 같은 데이터로 교체합니다.

 

y1 = SIN(2*!pi*x)

 

새로운 y1 역시 기본적으로는 사인(Sine) 곡선이지만 y2와는 주기가 다릅니다. 이렇게 y1만 교체한 후 위의 작업들을 다시 수행하면 됩니다. 일단 조건 선별 및 색상 교체를 하지 않고 표출된 그림을 보면 다음과 같습니다.

 

 

그리고 앞서 해본 것과 동일한 방식으로 조건을 선별하여 별도의 색상으로 채운 결과는 다음 그림과 같습니다.

 

 

따라서 FILLPLOT 함수를 사용하는 표출 작업에 있어서 위와 같은 방식으로 좀 더 다양한 방식의 결과들을 얻을 수 있음을 참조해두시면 좋을 것 같습니다.

 

 

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

LIST