2014-03-31 64 views
1

下面的代碼片段是用4個價格條創建燭臺圖表。在「NOT WORKING」標籤之間寫入的代碼行應該在存儲到變量d(x軸)和h(y軸)的座標之後在第二個價格欄上標註單詞「BUY」。但是,這不起作用,因爲圖表中沒有註釋。在matplotlib燭臺圖表上註釋一些東西

下面的代碼是可運行的,任何人都可以解釋我如何在圖表上做一個註釋嗎?

from pylab import * 
from matplotlib.finance import candlestick 
import matplotlib.gridspec as gridspec 

quotes = [(734542.0, 1.326, 1.3287, 1.3322, 1.3215), (734543.0, 1.3286, 1.3198, 1.3292, 1.3155), (734546.0, 1.321, 1.3187, 1.3284, 1.3186), (734547.0, 1.3186, 1.3133, 1.3217, 1.308)] 

fig, ax = subplots() 
candlestick(ax,quotes,width = 0.5) 
ax.xaxis_date() 
ax.autoscale_view() 

#NOT WORKING 
h = quotes[1][3] 
d = quotes[1][0] 
ax.annotate('BUY', xy = (d-1,h), xytext = (d-1, h+0.5), arrowprops = dict(facecolor='black',width=1,shrink=0.25)) 
#NOT WORKING  

plt.show() 

P.S.嵌入語句print "(", d, ",", h, ")"給出以下輸出:>>> (734543.0 , 1.3292)。這正是我希望得到我的箭的地方,所以我猜這個問題必須與箭的形象化有關,而不是與它的創造有關。

回答

0

你的問題是你的箭頭實際上不在matplotlib屏幕上。您已將xytext的位置設置爲(d-1, h+0.5),這是您的方式y-limits。以下修復代碼:

from pylab import * 
from matplotlib.finance import candlestick 
import matplotlib.gridspec as gridspec 

quotes = [(734542.0, 1.326, 1.3287, 1.3322, 1.3215), (734543.0, 1.3286, 1.3198, 1.3292, 1.3155), (734546.0, 1.321, 1.3187, 1.3284, 1.3186), (734547.0, 1.3186, 1.3133, 1.3217, 1.308)] 

fig, ax = subplots() 
candlestick(ax,quotes,width = 0.5) 
ax.xaxis_date() 
ax.autoscale_view() 

#NOT WORKING 
h = quotes[1][3] 
d = quotes[1][0] 
ax.annotate('BUY', xy = (d-1,h), xytext = (d-1, h+0.003), arrowprops = dict(facecolor='black',width=1,shrink=0.25)) 
#NOT WORKING  

plt.show() 

Plot output