728x90
반응형
Datetime 으로 그래프를 그릴 때 아래처럼 보기만 해도 눈이 아픈 x축을 그리곤 했는데요.....
어떻게 하면 날짜 형식의 x축을 가독성 있게 제시할 수 있는지 보겠습니다.
Datetime 은 포맷의 형식이 강하기 때문에 포맷을 바꾸기 위해서는 formatter가 필수적인데요
이런식으로 matplotlib.dates는 date의 위치(간격)을 정해주는 Locator, 형식을 변환하는 Formatter 로 이루어져 있습니다
가장 먼저 해야 하는 일은 mdates를 호출하는 겁니다
import matplotlib.dates as mdates
그 다음은 x축이 어떤 간격으로 tick을 만들어야 한다는 locator을 지정해주는 일입니다.
dates 는 정말 다양한 간격의 locator 를 가지고 있습니다.
- MicrosecondLocator:microseconds 단위
- SecondLocator: seconds.단위
- MinuteLocator: minutes.단위
- HourLocator: 시간단위.
- DayLocator: 날 단위
- WeekdayLocator: 평일단위, e.g., MO, TU.
- MonthLocator: 월단위, e.g., 7 for July.
- YearLocator: 연단위
- AutoDateLocator: auto 방식
등등
사용법은 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"))
monthyearFmt = mdates.DateFormatter('%Y %B')
ax1.xaxis.set_major_formatter(monthyearFmt)
Source:
728x90
반응형
'Data Science > Pandas, Numpy' 카테고리의 다른 글
[ Numpy ] 넘파이 배열 , axis, 차원 축소/확장 정리 (0) | 2022.10.19 |
---|---|
Missingno를 통해 데이터 결측치 확인하는 방법 (0) | 2022.10.12 |
matplotlib 가로형 boxplot 그리는 법 (0) | 2022.10.12 |
막대그래프에 레이블 달기 (plt.text) (0) | 2022.10.12 |
DataFrame 열(Columns) 비교하기 (train,test 피처 차이 비교) (0) | 2022.10.12 |
댓글