반응형
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
. 따라서 19910102
1991 년 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 |