본문 바로가기
Data Science/Pandas, Numpy

Datetime x축 효과적으로 그리는 법

by Queen2 2022. 10. 12.
728x90
반응형

Datetime 으로 그래프를 그릴 때 아래처럼 보기만 해도 눈이 아픈 x축을 그리곤 했는데요.....

어떻게 하면 날짜 형식의 x축을 가독성 있게 제시할 수 있는지 보겠습니다.

Source: stackoverflow

 

Datetime 은 포맷의 형식이 강하기 때문에  포맷을 바꾸기 위해서는 formatter가 필수적인데요

 

matplotlib.org

이런식으로 matplotlib.dates는 date의 위치(간격)을 정해주는 Locator, 형식을 변환하는 Formatter 로 이루어져 있습니다

 

 

 

가장 먼저 해야 하는 일은 mdates를 호출하는 겁니다

import matplotlib.dates as mdates

 

그 다음은 x축이 어떤 간격으로 tick을 만들어야 한다는 locator을 지정해주는 일입니다.

dates 는 정말 다양한 간격의 locator 를 가지고 있습니다.

등등

 

사용법은 ax.xaxis 뒤에 주눈금선 포맷 지정과 minor 눈금 지정을 해주면 되는데요

몇가지 응용예시를 보겠습니다.

 

 

ConciseDateFormatter 예시)

fig, axs = plt.subplots(3, 1, constrained_layout=True, figsize=(6, 6))
for nn, ax in enumerate(axs):
    locator = mdates.AutoDateLocator(minticks=3, maxticks=7)
    formatter = mdates.ConciseDateFormatter(locator)
    ax.xaxis.set_major_locator(locator)
    ax.xaxis.set_major_formatter(formatter)

    ax.plot(dates, y)
    ax.set_xlim(lims[nn])
axs[0].set_title('Concise Date Formatter')

plt.show()

예시를 보면 우선적으로 ax.xaxis.set_major_locator 을 통해서 x축의 간격을 지정해주고

거기에다가 set_major_formatter로 연도와 월이 한 줄에 정리돼서 나오는 concise dateformatter을 사용했습니다

 

 

ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m"))
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%Y-%m"))

Source: stackoverflow

monthyearFmt = mdates.DateFormatter('%Y %B')
ax1.xaxis.set_major_formatter(monthyearFmt)

 

 

 

 

 

Source:

https://matplotlib.org/stable/gallery/ticks/date_concise_formatter.html#sphx-glr-gallery-ticks-date-concise-formatter-py

728x90
반응형

댓글