[python] Matplotlib을 사용하여 Python에서 시간 플로팅

형식 (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)


답변

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()

다음과 유사한 이미지를 생성합니다.

산포도


답변

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()

이는 기포가 원하는대로 분포 된 이미지를 생성합니다.

기포가 시간에 따라 분포 된 그래프


답변