2013-07-26 34 views
8

Cho một DataFrame như:điểm chú thích từ một Pandas Dataframe trong Matplotlib cốt truyện

   LIST_PRICE  SOLD_PRICE 
MOYRLD  
1999-03-31 317062.500000 314800 
1999-06-30 320900.000000 307100 
1999-09-30 400616.666667 366160 
1999-12-31 359900.000000 NaN 
2000-03-31 359785.714286 330750 

Sử dụng mã:

import matplotlib.dates as mdates 
ax3=df5.plot() 
ax3.set_ylim(100000,600000) 
ax3.set_title('Heatherwood-Quarterly') 

tôi tạo ra một âm mưu như:

Heatherwood example

Tôi không thể tìm ra cách để trục gắn một nnotation? Ví dụ này Annotate Time Series plot in Matplotlib rất gần nhưng tôi không biết cách chỉ định trục x và trục từ DataFrame?

Vì vậy, nó nên được gần gũi với:

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

fig.autofmt_xdate() 
plt.show() 

Nhưng tôi phải làm gì sử dụng thay vì x[1]y[1] để có được những trục? Tôi cố gắng ['MORLD'][1]['SOLD_PRICE'][1] và có index out of range ...

+1

loo tại liên kết cuối cùng: http://pandas.pydata.org/pandas -docs/dev/cookbook.html # plotting – Jeff

+0

Dường như không sử dụng Dataframe với chỉ mục Dataframe? – dartdog

+0

Với gấu trúc 0.11.0, và matplotlib 1.2.1 nó có vẻ hoạt động đúng nếu bạn sử dụng 'ax.annotate ('Test', (df5.index [1], df5 ['SOLD_PRICE'] [1]), .. ''. Ít nhất nếu chỉ mục của 'DataFrame' của bạn là' DatetimeIndex'. – hooy

Trả lời

12

Bạn có thể truy cập vào các giá trị chỉ số với index thuộc tính của DataFrame. Vì vậy, bạn chỉ có thể sử dụng

ax3.annotate('Test', 
      (df5.index[1], df5['SOLD_PRICE'][1]), 
      xytext=(15, 15), 
      textcoords='offset points', 
      arrowprops=dict(arrowstyle='-|>')) 

Điều này cho phép (dựa trên số liệu mẫu của bạn) đầu ra dưới đây:

enter image description here

+1

Rất hữu ích, cảm ơn! – dartdog

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