2009-10-15 7 views
88

나는 (HH : MM : SS.mmmmmm) 형식의 타임 스탬프 어레이와 타임 스탬프 배열의 값에 각각 대응하는 부동 소수점 배열을 가지고 있습니다.Matplotlib로 파이썬에서 플롯하는 시간

Matplotlib을 사용하여 x 축에 시간을 그리고 y 축에 숫자를 플로팅 할 수 있습니까?

나는하려고했지만, 어떻게 든 그것은 수레의 배열만을 받아 들였다. 시간을 계획하려면 어떻게해야합니까? 어떤 식 으로든 형식을 수정해야합니까?

답변

107

먼저 타임 스탬프를 파이썬 datetime 개체 (datetime.strptime 사용)로 변환해야합니다. 그런 다음 date2num을 사용하여 날짜를 matplotlib 형식으로 변환하십시오. plot_date를 사용

플롯 날짜와 값 :

dates = matplotlib.dates.date2num(list_of_datetimes) 
matplotlib.pyplot.plot_date(dates, values) 
+1

날짜를 표시 하시겠습니까? 나는 datetime으로 변환 할 때만 시간이 필요합니다. 년은 1990로 설정됩니다. – randomThought

+0

"... datetime으로 변환하면 연도는 1990로 설정됩니다.": 문자열에서 datetime으로 변환하는 데 사용하는 코드를 게시 할 수 있습니까? ? 전환에 문제가있을 수 있습니다. 레. 차트 레이블의 형식은 J. K. Seppänen이 제공 한 date_demo1 링크를 참조하십시오. matplot lib 문서는 우수합니다, BTW. http://matplotlib.sourceforge.net/index.html – codeape

+11

plot_dates -> matplotlib.pyplot.plot_date (날짜, 값) – Pete

52

또한 (자신의 캐릭터 라인 표현에서 그들을 구문 분석 후) pyplot.plot를 사용하여 타임 스탬프 값 쌍을 플롯 할 수 있습니다. (하기 matplotlib 버전 1.2.0 및 1.3.1 테스트).

예 : 여기


Line Plot가 산점도 같은 같습니다

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

이 비슷한 이미지를 생성합니다 :

Scatter Plot

+2

어떻게 산점도로 작업 할 수 있습니까? – andi

+4

@andi 제 예제처럼 작동해야합니다 ('plot'을'scatter'로 변경하십시오). – moooeeeep

+1

이것이 제 5의 질문 인 이유를 이해하지 못합니다. 아무도 실제로 * 트라이얼 * 스 캐터 플롯을 사용하지 않는 곳에서 발생했습니다. 작동하지 않습니다. '유형 오류 - 유효하지 않은 유형 승격 '. – dwanderson

2

칠년 이상을이 코드가 도움이되었습니다. 그러나 내 시간은 여전히 ​​올바르게 나타나지 않았습니다. (%의 H %의 M)하기 matplotlib 2.0.0 및 I를 사용

enter image description here

는 I가 형식을 변경

import matplotlib.dates as mdates 
myFmt = mdates.DateFormatter('%d') 
ax.xaxis.set_major_formatter(myFmt) 

폴 H. 의해 Editing the date formatting of x-axis tick labels in matplotlib에서 다음 코드 비트를 추가했고 시간이 올바르게 표시되었습니다. enter image description here

커뮤니티에 감사드립니다.

1

matplotlib 버전 2.0.2를 사용하는 데 문제가있었습니다. 위의 예제를 실행하면 중심에 쌓인 일련의 거품이 생겼습니다.원하는

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

이것은 분산 된 기포에 의한 이미지를 생성한다 :

plt.plot([],[]) 

코드 전체가된다 :

graph with centered stack of bubbles

는 I 다른 라인을 추가함으로써이 문제를 "고정" .

graph with bubbles distributed over time

+0

업데이트 된 버전을 이용해 주셔서 감사합니다. – Aventinus

관련 문제