형식 (HH : MM : SS.mmmmmm)의 타임 스탬프 배열과 부동 소수점 숫자의 배열이 각각 타임 스탬프 배열의 값에 해당합니다.
Matplotlib을 사용하여 x 축에 시간과 y 축에 숫자를 그릴 수 있습니까?
나는 노력하고 있었지만 어떻게 든 그것은 수레의 배열 만 받아 들였다. 시간을 표시하려면 어떻게해야합니까? 어떤 식 으로든 형식을 수정해야합니까?
형식 (HH : MM : SS.mmmmmm)의 타임 스탬프 배열과 부동 소수점 숫자의 배열이 각각 타임 스탬프 배열의 값에 해당합니다.
Matplotlib을 사용하여 x 축에 시간과 y 축에 숫자를 그릴 수 있습니까?
나는 노력하고 있었지만 어떻게 든 그것은 수레의 배열 만 받아 들였다. 시간을 표시하려면 어떻게해야합니까? 어떤 식 으로든 형식을 수정해야합니까?
답변:
먼저 타임 스탬프를 Python datetime
객체 로 변환해야 합니다 (use datetime.strptime
). 그런 다음 date2num
날짜를 matplotlib 형식으로 변환하는 데 사용 하십시오.
다음을 사용하여 날짜와 값을 플로팅하십시오 plot_date
.
dates = matplotlib.dates.date2num(list_of_datetimes)
matplotlib.pyplot.plot_date(dates, values)
scatter_date()
이 그래프를 얻는 동등한 / 직접적인 방법 은 없습니다 .
pyplot.plot을 사용하여 타임 스탬프, 값 쌍을 플롯 할 수도 있습니다 (문자열 표현에서 파싱 한 후). (matplotlib 버전 1.2.0 및 1.3.1로 테스트되었습니다.)
예:
import datetime
import random
import matplotlib.pyplot as plt
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.plot(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
plt.show()
결과 이미지 :
다음은 산점도와 동일합니다.
import datetime
import random
import matplotlib.pyplot as plt
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.scatter(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
plt.show()
다음과 유사한 이미지를 생성합니다.
plot
하는 scatter
).
Type Error - invalid type promotion
.
datetime.datetime
x 축에 객체가 있는 산점도의 예를 게시물에 추가했습니다.
plt.grid(True)
matplotlib.__version__
2.2.2에서 작동합니다 . 그러나 산점도에는 기본적으로 지나치게 넓은 x- 한계가 설정되어 있습니다. 이 답변은 수동 조정 이외의 해결 방법을 제공하는 것 같습니다 plt.xlim(...)
: stackoverflow.com/a/46467896/1025391
7 년 후이 코드가 도움이되었습니다. 그러나 내 시간은 여전히 올바르게 나타나지 않았습니다.
Matplotlib 2.0.0을 사용하면 Paul H의 matplotlib에서 x 축 눈금 레이블의 날짜 형식 편집 에서 다음 코드를 추가해야했습니다 .
import matplotlib.dates as mdates
myFmt = mdates.DateFormatter('%d')
ax.xaxis.set_major_formatter(myFmt)
형식을 (% H : % M)으로 변경하고 시간이 올바르게 표시되었습니다.
커뮤니티 덕분입니다.
matplotlib 버전 2.0.2를 사용 하여이 문제가 발생했습니다. 위에서 예제를 실행하면 중앙에 쌓인 거품 세트가 있습니다.
다른 줄을 추가하여 문제를 "수정"했습니다.
plt.plot([],[])
전체 코드 스 니펫은 다음과 같습니다.
import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(minutes=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.plot([],[])
plt.scatter(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
myFmt = mdates.DateFormatter('%H:%M')
plt.gca().xaxis.set_major_formatter(myFmt)
plt.show()
plt.close()
이는 기포가 원하는대로 분포 된 이미지를 생성합니다.