IDL/New Graphics

에러바(Error Bar)의 표출 [2]

이상우_idl 2020. 8. 5. 11:28
728x90
반응형

IDL의 NG 체계에서 지원되는 그래픽 함수들 중에 ERRORPLOT이라는 함수가 있습니다. 에러바(Error Bar) 형태의 플롯을 표출할 수 있도록 해주는 그래픽 함수입니다. 이 기능을 사용하여 에러바 형태의 표출을 하는 방법에 대하여 제가 예전에 관련 게시물을 한번 올린 바 있습니다.

 

blog.daum.net/swrush/337

 

에러바(Error Bar)의 표출

오늘은 IDL에서 에러바(Error Bar)의 표출 방법에 관한 얘기를 해볼까 합니다. 원래 기존의 Direct Graphics 체계에서는 이러한 역할을 하는 PLOTERR이라는 프로시저가 있었습니다. 하지만 오늘은 New Graphic

blog.daum.net

 

오늘은 이 내용에 대하여 약간의 보충을 해보고자 합니다. 먼저 위의 게시물에서 사용했던 것과 동일한 예제 데이터를 정의하여 진행해보겠습니다.

 

x = [2, 3, 5, 7, 8]

y = [8.5, 11.2, 9.3, 8.1, 12.6]

y_err = [2.4, 1.8, 2.7, 2.2, 1.9]

 

여기서 x, y는 데이터 포인트들의 X, Y 좌표값 배열이고 y_err은 각 포인트에서의 Y방향 에러 크기값 배열에 해당됩니다. 이 데이터를 이용하여 에러바와 데이터 포인트를 함께 표출해봅시다. 이를 위한 코딩의 내용은 다음과 같습니다.

 

win = WINDOW(DIMENSIONS=[600, 500], /NO_TOOLBAR)

epl = ERRORPLOT(x, y, y_err, LINESTYLE=6, $

  XRANGE=[0, 10], YRANGE=[0, 20], $

  ERRORBAR_COLOR='cyan', $

  ERRORBAR_THICK=2, ERRORBAR_CAPSIZE=0.4, $

  SYMBOL='circle', SYM_COLOR='red', $

  /SYM_FILLED, SYM_SIZE=1.2, $

  /CURRENT)

 

이대로 실행하면 다음과 같은 그림을 얻게 됩니다.

 

 

사용된 코드의 내용에서는 ERRORPLOT 함수를 사용하면서 x, y, y_err을 인수로 명시하였습니다. 그리고 'ERRORBAR_'로 시작하는 속성들은 말 그대로 에러바의 색상, 두께, 끄트머리 가로선의 길이 등을 조정하는 역할을 합니다. 그리고 심볼 관련 속성들을 함께 사용함으로써 각 데이터 포인트를 심볼로 표시하였습니다. 이렇게 하면 에러바의 중심에 해당되는 점들이 명확하게 표시가 됩니다. 그리고 LINESTYLE 속성을 6으로 설정하여 데이터 포인트들 사이사이의 선이 표시되지 않도록 해보았습니다.

 

그런데 이 그림을 보면 뭔가 좀 개운치 않은 부분이 있습니다. 바로 심볼이 에러바 선에 의하여 가려진 것입니다. 그로 인하여 심볼 자체가 갈라진 것처럼 보입니다. 여기서 심볼의 색상은 'red'로 하였고 에러바 선의 색상을 'cyan'으로 하였는데 색상대비로 인하여 이러한 문제가 더 두드러져 보입니다. 이처럼 ERRORPLOT 함수 자체적으로 심볼을 표시하는 기능이 지원되긴 하지만, 이 기능을 사용할 경우에는 심볼이 선에 가려지는 문제가 있습니다. 아마도 ERRORBAR 함수 자체의 기능만으로는 이러한 문제를 피할 방법은 없는 것 같다는 것이 제 생각입니다.

 

따라서 심볼이 에러바 선에 가려지지 않도록 표시되게 하려면 뭔가 다른 방법이 필요할 것으로 보입니다. 제가 권장하는 방법은 먼저 에러바를 ERRORPLOT 함수로 표출할 때에는 심볼 표시를 하지 말고, 그 대신 바로 이어서 PLOT 함수를 추가로 이용하여 심볼만 덧그려지도록 하는 것입니다. 위의 예제 데이터를 그대로 이용하되, 표출 부분은 아래와 같은 내용으로 대체해봅시다.

 

epl = ERRORPLOT(x, y, y_err, LINESTYLE=6, $

  XRANGE=[0, 10], YRANGE=[0, 20], $

  ERRORBAR_COLOR='cyan', $

  ERRORBAR_THICK=2, ERRORBAR_CAPSIZE=0.4, $

  /CURRENT)

epl_o = PLOT(x, y, LINESTYLE=6, $

  SYMBOL='circle', SYM_COLOR='red', $

  /SYM_FILLED, SYM_SIZE=1.2, /OVERPLOT)

 

이와 같이 ERRORPLOT 함수로는 선 형태의 에러바만 표출하고 PLOT 함수로는 심볼만을 표출하는 것입니다. 이렇게 하여 실행하면 그 결과는 다음 그림과 같습니다.

 

 

그러면 이와 같이 심볼이 선에 가려지지 않고 온전하게 표시됩니다. 따라서 ERRORPLOT 함수를 사용하여 에러바를 표출하는데 있어서 심볼도 함께 온전한 모습으로 표시되도록 하려면, 이러한 방법으로 해결하면 좋을 것 같습니다.

반응형