Matplotlib에서 시간대(timezone) 정보가 포함된 시간 데이터를 다루려면 pytz 라이브러리를 활용하면 됩니다. 아래에서 단계별로 살펴보겠습니다.
처리 절차
- 먼저 그림(figure) 크기를 설정하고, 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
- 2차원이면서 크기 변경이 가능한 표 형태의 데이터프레임(DataFrame)을 생성합니다.
- 시간대가 있는 시간을 처리하기 위해 Olson tz 데이터베이스를 Python으로 가져오는 pytz 라이브러리를 사용합니다. 이 라이브러리를 이용하면 정확하고 크로스 플랫폼에서 일관된 시간대 계산이 가능합니다.
- plot() 메서드를 사용해 데이터프레임을 그래프로 그립니다.
- 마지막으로 show() 메서드를 호출하여 그림을 화면에 표시합니다.
예제 코드
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import pytz
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
df = pd.DataFrame(
dict(y=np.random.normal(size=5)),
index=pd.date_range(
start='2018-03-11 01:30',
freq='15min',
periods=5,
tz=pytz.timezone('US/Eastern')))
df.plot()
plt.show()코드 설명
위 예제에서는 pd.date_range() 함수의 tz 인자에 pytz.timezone('US/Eastern')을 전달하여 미국 동부 시간대 기준의 DatetimeIndex를 생성합니다. 시작 시각 '2018-03-11 01:30'부터 15분 간격으로 총 5개의 시점이 만들어지며, 각 인덱스에는 시간대 정보가 함께 포함됩니다. 이렇게 생성된 데이터프레임을 plot()으로 시각화하면 x축에 시간대가 반영된 시간 레이블이 자동으로 표시됩니다.
실행 결과
