2012-06-16 64 views
20

Tôi có một mảng chỉ mục (x) ngày (đối tượng datetime) và một mảng giá trị thực tế (y: giá trái phiếu). Làm (trong ipython):Lô thời gian Chú thích Dòng trong Matplotlib

plot(x,y) 

Tạo một biểu đồ chuỗi thời gian hoàn toàn tốt đẹp với trục x dán nhãn với số ngày. Không có vấn đề cho đến nay. Nhưng tôi muốn thêm văn bản vào những ngày nhất định. Ví dụ: tại thời điểm 2009-10-31, tôi muốn hiển thị văn bản "Sự kiện 1" có mũi tên chỉ tới giá trị y vào ngày đó.

Tôi đã đọc máng tài liệu Matplotlib trên văn bản()chú thích() không có kết quả. Nó chỉ bao gồm các trục x số tiêu chuẩn, và tôi không thể suy ra cách làm việc với những ví dụ đó về vấn đề của tôi.

Cảm ơn bạn

Trả lời

40

Matplotlib sử dụng định dạng điểm nổi bên trong cho ngày.

Bạn chỉ cần chuyển đổi ngày sang định dạng đó (sử dụng matplotlib.dates.date2num hoặc matplotlib.dates.datestr2num) và sau đó sử dụng annotate như bình thường.

Như một ví dụ hơi quá ưa thích:

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

thân mến Joe, tuyệt vời. Cảm ơn bạn! – luffe

Các vấn đề liên quan