오류...는 아니고,
한 3일 붙잡고 있었던 부분을 해결하게 되어서 남긴다.
붙잡고 있었던 부분은 matplotlib의 date.MinuteLocator
이다.
사실은 삽질에 거의 가까웠다.
x축은 시간, y축은 load값으로 설정하여 plot을 그려야했다.
시간 단위(시간, 분 혹은 초)를 기준으로 나누려고 했으나... x축이 자꾸만
이렇게 의도와는 다르게 흘러갔다.
가장 큰 문제는 HourLocator를 사용한 것이었다.
x축의 최솟값과 최댓값의 차는 고작 10분이었는데 HourLocator을 사용해 1시간 단위로 잘라라! 라고 명령을 하니 당연히 위와 같은 결과만 내뱉는 것이었다.
그래서
ax = plt.gca()
ax.xaxis.set_major_formatter(hfmt)
ax.xaxis.set_major_locator(dates.MinuteLocator(1))
이와 같이 코드를 수정하였다. 수정한 부분은 HourLocator
에서 MinuteLocator
로 바꿨다는 것이다. 1을 포함해서 .....
문제는 1을 포함했다는 것이었다!
정확한 원인은 찾지 못했으나, 아마 해당 함수가 1이 어느 파라미터의 값으로 들어가야하는지 몰랐다는 것이 내 의견이다.
interval 값은 1이 default이므로 해당 값을 지우고,
ax = plt.gca()
ax.xaxis.set_major_formatter(hfmt)
ax.xaxis.set_major_locator(dates.MinuteLocator())
이와 같이 코드를 실행하니 아래와 같이 예쁘게 잘 그려졌다!
Matplotlib를 통해 plot을 그릴 때에 x축이 시간 데이터라면 표시되는 시간의 간격을 조정할 수 있다.
Locator는 Minute, Hour, Month 등 다양한 단위로 존재하니, 아래의 링크에 들어가서 확인해보면 될 듯하다.
https://matplotlib.org/stable/api/dates_api.html
plot을 fig와 ax를 통한 subplot으로 그렸다면,
ax.xaxis.set_major_formatter(hfmt) # date formatting을 위한 코드
ax.xaxis.set_major_locator(dates.MinuteLocator())
위와 같은 코드를 추가하면 된다.
하지만 plt.plot과 같이 ax를 따로 설정해주지 않았다면,
ax = plt.gca()
ax.xaxis.set_major_formatter(hfmt)
ax.xaxis.set_major_locator(dates.MinuteLocator())
이와 같이 plt.gca()를 이용해 축을 설정해주어야 한다. 쉽게 설명하면 나 이제 축 좀 쓸게! 라고 plot을 그리는 컴퓨터에게 알려주는 부분이다.
과 같이 interval=3
을 추가해야 한다. 꼭... interval이라는 파라미터를 함께 선언해주기 ... 그래야 나와 같은 삽질을 하지 않을 수 있다 ^^