Development Tip

Python의 matplotlib를 사용하여 x 축에 날짜 그리기

yourdevel 2021. 1. 10. 19:40
반응형

Python의 matplotlib를 사용하여 x 축에 날짜 그리기


날짜에 대한 정보를 플롯하려고합니다. "01/02/1991"형식의 날짜 목록이 있습니다.

다음을 수행하여 변환했습니다.

x = parser.parse(date).strftime('%Y%m%d'))

주는 19910102

그런 다음 num2date를 사용하려고했습니다.

import matplotlib.dates as dates
new_x = dates.num2date(x)

플로팅 :

plt.plot_date(new_x, other_data, fmt="bo", tz=None, xdate=True)

하지만 오류가 발생합니다. "ValueError : 연도가 범위를 벗어났습니다"라고 표시됩니다. 해결책이 있습니까?


@KyssTao가 말했듯이, 0001-01-01 + 1 이후의 일 수를 나타내는 부동 소수점이어야 help(dates.num2date)한다고 말합니다 x. 따라서 199101021991 년 1 월 2 이 아닙니다. 0001-01-01에서 19910101 일을 계산하면 54513 년 또는 이와 유사한 해 (365.25로 나누기, 1 년의 일수)를 얻을 수 있기 때문입니다.

사용 datestr2num하는 대신 (참조 help(dates.datestr2num))

new_x = dates.datestr2num(date) # where date is '01/02/1991'

plot()대신을 사용하여 더 간단하게 할 수 있습니다 plot_date().

먼저 문자열을 Python 인스턴스로 변환합니다 datetime.date.

import datetime as dt

dates = ['01/02/1991','01/03/1991','01/04/1991']
x = [dt.datetime.strptime(d,'%m/%d/%Y').date() for d in dates]
y = range(len(x)) # many thanks to Kyss Tao for setting me straight here

그런 다음 플롯 :

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.plot(x,y)
plt.gcf().autofmt_xdate()

결과:

여기에 이미지 설명 입력

참조 URL : https://stackoverflow.com/questions/9627686/plotting-dates-on-the-x-axis-with-pythons-matplotlib

반응형

'Development Tip' 카테고리의 다른 글

정수의 자릿수 찾기  (0) 2021.01.10
PHP 객체 배열  (0) 2021.01.10
양식 제출 중지, Jquery 사용  (0) 2021.01.10
Linux에서 Windows로 scp  (0) 2021.01.10
Apache POI에서 열 너비 설정  (0) 2021.01.10