IDL에서 막대 형태의 그래프(Bar Plot)를 표출하려면 NG 체계의 BARPLOT 함수를 사용하는 것이 가장 편리합니다. 그리고 이러한 표출 방식은 그 특성상 다수의 값들로 구성된 배열에 대하여 값의 구간별 빈도수를 나타내는 히스토그램(Histogram)을 가시화하는 목적으로 자주 사용됩니다. 그래서 가상의 데이터에 대하여 히스토그램 결과를 얻고 이를 BARPLOT 함수를 사용하여 막대 형태의 플롯을 표출하는 방법을 예전에 관련 게시물을 통하여 소개한 바 있습니다.
그리고 통상적으로는 이러한 그림은 막대들이 수직 방향으로 서있는 모습이 되도록 표출하는 경우가 많습니다. 하지만 경우에 따라서는 막대들이 수평 방향으로 마치 누워있는 듯한 모습이 되도록 표출해야 할 경우도 있을 것입니다. 물론 이러한 표출 방식도 앞서 언급한 BARPLOT 함수에서 지원을 합니다. 그래서 오늘은 BARPLOT 함수를 사용하여 막대들이 수평 방향으로 누워있는 형태로 표출하는 방법을 예제와 함께 소개해보고자 합니다. 이 예제에서는 정규 분포를 하는 값들로 구성된 배열을 생성하고 이 배열에 대하여 HISTOGRAM 함수를 적용하여 분포 결과를 얻어서 이 결과 자료를 BARPLOT 함수에 투입하여 표출하는 방식으로 작업을 진행해보고자 합니다. 먼저 예제 데이터를 다음과 같이 생성해봅시다.
n = 10000
data = RANDOMN(seed, n)*10
PRINT, MIN(data), MAX(data)
여기서는 RANDOMN 함수를 사용하여 정규 분포를 하는 10000개의 난수값들로 구성된 배열 data를 생성하였습니다. 이 배열 내 값들은 그 범위가 대략 -40~40 정도이고 평균이 0이며 표준편차가 10이 됩니다. 물론 난수들로 생성하였기 때문에 여러분이 얻는 결과는 제 결과와는 약간 다르겠지만 그 통계적 특성 자체는 동일할 것입니다. 그 다음은 이 데이터에 HISTOGRAM 함수를 적용하여 분포 결과를 얻습니다.
bsz = 5
h = HISTOGRAM(data, BINSIZE=bsz, MIN=-50, MAX=50, LOCATIONS=loc)
여기서는 -50부터 +50까지 5의 간격으로 구간들을 나누고 각 구간별 빈도수를 집계하도록 하였습니다. 이러한 과정에 의하여 얻게 되는 h는 각 구간별 빈도수 값들로 구성된 배열이 되고, loc는 각 구간별 위치값들로 구성된 배열이 됩니다. 이 결과를 BARPLOT 함수에 투입하여 그림으로 표출해봅시다. 먼저 수직 방향의 막대들로 표시되는 방식부터 진행하면 그 과정은 다음과 같습니다.
win1 = WINDOW(DIMENSIONS=[800, 600], /NO_TOOLBAR)
p1 = BARPLOT(loc+bsz/2., h, FILL_COLOR='teal', $
XRANGE=[-50, 50], XTICKINTERVAL=5, XMINOR=0, $
XTICKLEN=0.01, YTICKLEN=0.02, $
XTITLE='Data Value', YTITLE='Count', $
FONT_SIZE=11, MARGIN=0.1, /CURRENT)
여기서는 막대들이 각 구간의 눈금 안쪽에 위치하도록 하기 위하여 그냥 loc 대신 loc+bsz/2.을 사용했음을 유의하면 됩니다. 이러한 과정에 의하여 표출된 그림은 다음과 같습니다.
그러면 이번에는 막대들이 수평 방향으로 표시되도록 해봅시다. 별도의 그래픽창을 열고 이러한 그림이 표출되도록 하는 과정은 다음과 같습니다.
win2 = WINDOW(DIMENSIONS=[800, 600], /NO_TOOLBAR)
p2 = BARPLOT(loc+bsz/2., h, FILL_COLOR='plum', $
YRANGE=[-50, 50], YTICKINTERVAL=5, YMINOR=0, $
YTICKLEN=0.01, XTICKLEN=0.02, $
XTITLE='Count', YTITLE='Data Value', $
FONT_SIZE=11, MARGIN=0.1, /CURRENT, /HORIZONTAL)
여기서 BARPLOT 함수가 사용된 내용을 보면 앞서 수직 방향의 막대들로 표시하는 방식과 얼핏 비슷하게 보일 수도 있지만, 실제로는 몇가지 중요한 차이점들이 있습니다. 가장 먼저 막대들이 수평 방향이 되도록 하기 위하여 HORIZONTAL 속성을 사용한 것을 주목해야 합니다. 그리고 앞선 표출과 비교한다면 X축과 Y축의 속성들이 서로 뒤바뀐 것 또한 유의해야 합니다. 이러한 과정에 의하여 표출된 그림은 다음과 같습니다.
이 그림을 보면 막대들이 수직 대신 수평 방향으로 누워있는 형태인 것을 확인할 수 있습니다. 물론 당연히 두 그림은 동일한 결과이며 막대들의 표시 방향만 다를 뿐입니다. 어쨌든 IDL에서 BARPLOT 함수를 사용하여 막대 형태의 플롯을 표출하는데 있어서 막대들이 수직 방향 뿐 아니라 수평 방향이 되도록 표출하는 것도 이와 같은 방식으로 가능하다는 것을 참조해두시면 좋을 것 같습니다.
* 이 글이 도움이 되었다면 게시물에 대하여 공감 버튼(하트 모양) 클릭 및 블로그 구독도 해주시면 더 큰 힘이 됩니다. 감사합니다.
'IDL > New Graphics' 카테고리의 다른 글
계단형 플롯 표출하기 (0) | 2025.10.13 |
---|---|
축(Axis)의 범위 뒤집기 (0) | 2025.10.01 |
다중 색상의 선(Multi-Colored Line) 표출하기 (0) | 2025.09.23 |
NG 체계의 컬러 명칭 목록 보기 (0) | 2025.09.10 |
POLARPLOT 함수 소개 [2] (0) | 2025.04.29 |