* 이전 게시물의 내용에서 이어집니다.
지난 회 게시물의 막판에서 예고했던 대로 오늘은 기존에 그렸던 그림에 대하여 X축의 범위에 대한 조정 및 이와 관련된 자잘한 팁들에 관하여 살펴보겠습니다. 지난 회에 마지막으로 그렸던 그림을 표출하는 과정은 다음과 같았습니다.
pl = PLOT(tjs, speeds, YRANGE=[200, 500], COLOR='crimson', $
XTICKUNITS='hour', XTICKINTERVAL=3, $
XTICKFORMAT='(C(CHI2.2, ":", CMI2.2))', $
MARGIN=[0.1, 0.15, 0.1, 0.1], FONT_SIZE=10, /CURRENT)
ax_yp2 = pl.YRANGE[0]-(pl.YRANGE[1]-pl.YRANGE[0])*0.04
pl_ax2 = AXIS('X', LOCATION=ax_yp2, TICKINTERVAL=3, $
TICKFORMAT='(C(CMoA, " ", CDI))', TICKLAYOUT=1)
ax_yp3 = pl.YRANGE[0]-(pl.YRANGE[1]-pl.YRANGE[0])*0.08
pl_ax3 = AXIS('X', LOCATION=ax_yp3, TICKINTERVAL=3, $
TICKFORMAT='(C(CYI4.4))', TICKLAYOUT=1)
그리고 이렇게 하여 얻은 결과는 다음 그림과 같았습니다.
보시다시피 이 그림에서 X축의 범위는 2014년 8월 14일 00시 00분부터 8월 15일 00시 00분까지 24시간입니다. 원래의 자료 파일로부터 읽어들인 데이터의 범위가 24시간치였고 이 데이터를 모두 표출한 상태입니다. 그러면 만약 X축의 범위를 좁혀서 8월 14일 12시 00분부터 14시 00분까지 2시간 동안의 변화만 보고싶을 경우를 가정해보겠습니다. 그렇다면 X축의 범위도 이에 맞춰서 조정을 해야 합니다. 사실 축의 범위는 플롯을 생성하기 위하여 PLOT 함수를 처음에 사용할 때에도 설정할 수 있겠지만, 여기서는 후속 변경의 방식으로 작업하겠습니다.
이러한 작업을 위해서는 XRANGE 속성에 대한 값을 변경해야 합니다. 그런데 새로운 축 범위의 시작값과 끝값을 어떻게 부여해야 할까요? 이 그림에서는 X축은 날짜/시각에 해당되기 때문에, 축 범위의 시작값과 끝값도 당연히 이러한 특성에 맞춰줘야 합니다. 따라서 날짜/시각을 나타내는 절대적인 값인 Julian Date 형태의 값으로 명시해야 합니다. 그리고 이를 위해서는 다음과 같이 JULDAY 함수를 사용하여 축 범위의 시작값과 끝값을 정의해야 합니다.
tj1 = JULDAY(8, 14, 2015, 12, 0)
tj2 = JULDAY(8, 14, 2015, 14, 0)
여기서 사용된 JULDAY 함수에 대해서는 제가 별도의 게시물에서 소개한 바 있으므로, 자세한 내용은 그 내용을 참조하시기 바랍니다. 이와같이 시작값과 끝값을 Julian Date 형태로 정의한 다음 다음과 같이 XRANGE 속성에 부여하면 됩니다.
pl.XRANGE = [tj1, tj2]
이러한 설정이 적용된 결과는 다음 그림과 같습니다.
그런데 그림이 뭔가 좀 이상하죠? 사실은 축 범위에 대한 설정은 제대로 적용이 되었습니다. 다만 X축의 눈금이 너무 휑한데, 기존에는 X축의 눈금 간격을 3시간으로 정의해 놓았기 때문입니다. 이 상태에서 축 범위를 2시간으로 변경했으므로 이제는 축 범위보다 눈금 간격이 더 커져버린 비정상적인 상태이기 때문에 그림이 저렇게 이상하게 보이는 것입니다. 따라서 축의 범위를 재조정한 후에는 눈금 간격도 함께 변경해주는 것이 필요합니다. 아마 30분 정도로 해주면 적당할 것 같으므로, 다음과 같이 XTICKINTERVAL 속성의 값도 바꿔줍시다.
pl.XTICKINTERVAL = 0.5
여기서 30분은 0.5 시간이 되므로 이와 같이 설정하였습니다. 이렇게 하면 다음과 같은 그림을 얻게 됩니다.
이 정도면 어느 정도 괜찮은 표출이 된 것 같습니다. 하지만 조금만 더 손질을 해주는 것이 어떨까 싶어서 다음과 같이 기타 다른 설정들을 변경하는 내용들을 몇가지 추가해 보았습니다.
여기서는 Y축에 타이틀 문자를 추가하고, 플롯 자체에 대해서는 각 데이터 포인트를 작은 원형 심볼로 표시하면서 색상 및 크기를 나름 적절하기 설정하였습니다. 이와 같은 설정이 모두 반영되면 결과는 다음 그림과 같습니다.
제가 보기엔 그나마 조금 더 나아진 것 같긴 한데, 유저의 판단에 따른 추가적인 손질이 더 필요할지도 모르겠습니다. 그 부분은 여러분에게 맡깁니다. 그리고 이 그림을 보시면 중간중간 데이터가 끊어진 부분들이 보입니다. 이것은 제가 이미 1회차에서 언급했듯이 의미없는 데이터 값들을 NaN으로 대체했기 때문이라는 점을 다시 한번 언급해 둡니다.
그러면 이번 시리즈 게시물은 오늘 3회차까지로 마무리하겠습니다. 날짜 기반의 데이터를 플롯의 형태로 표출하는데 있어서, 제가 이번에 소개했던 내용들을 잘 참조해두시면 좋을 것 같습니다.
'IDL > New Graphics' 카테고리의 다른 글
VOLUME 함수를 이용한 3차원 큐브 데이터의 가시화 [2] (0) | 2020.01.20 |
---|---|
VOLUME 함수를 이용한 3차원 큐브 데이터의 가시화 [1] (0) | 2020.01.15 |
날짜 기반의 데이터를 읽고 표출하기 [2] (0) | 2019.09.09 |
날짜 기반의 데이터를 읽고 표출하기 [1] (0) | 2019.09.06 |
NG 체계에서 Order 메서드의 활용 (0) | 2019.09.02 |