2012-06-16 2 views
20

나는 날짜 배열 (datetime objects)과 실제 값의 배열 (y : 채권 가격)을 가지고 있습니다. (iPython에서) :Matplotlib에 시계열 주석 달기

plot(x,y) 

날짜가 레이블 된 x 축을 가진 완벽한 정밀 시계열 그래프를 생성합니다. 지금까지 문제 없습니다. 그러나 특정 날짜에 텍스트를 추가하고 싶습니다. 예를 들어, 2009-10-31에 나는 해당 날짜에 y 값을 가리키는 화살표가있는 "이벤트 1"텍스트를 표시하고자합니다. 내가 텍스트에하기 matplotlib 문서 물마루 읽고

()주석() 아무 소용이. 표준 번호가 매겨진 x 축만 다루므로 문제에 대한 예제를 어떻게 처리 할지를 추측 할 수 없습니다.

답변

40

하기 matplotlib 날짜에 대한 내부 부동 소수점 형식을 사용합니다 감사합니다.

날짜를 해당 형식 (matplotlib.dates.date2num 또는 matplotlib.dates.datestr2num)으로 변환하고 평소대로 annotate을 사용해야합니다. 다소 지나치게 화려한 예를 들어

:

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

x = [dt.datetime(2009, 05, 01), dt.datetime(2010, 06, 01), 
    dt.datetime(2011, 04, 01), dt.datetime(2012, 06, 01)] 
y = [1, 3, 2, 5] 

fig, ax = plt.subplots() 
ax.plot_date(x, y, linestyle='--') 

ax.annotate('Test', (mdates.date2num(x[1]), y[1]), xytext=(15, 15), 
      textcoords='offset points', arrowprops=dict(arrowstyle='-|>')) 

fig.autofmt_xdate() 
plt.show() 

enter image description here

+0

친애하는 조, 멋진. 고맙습니다! – luffe