在matplotlib烛台图表上注释一些东西

时间:2014-03-31 07:30:26

标签: python matplotlib

以下代码片段正在创建一个包含4个价格条的烛台图表。在" NOT WORKING"之间写的代码行。标签应注释单词' BUY'在存储到变量d(x轴)和h(y轴)的坐标之后的第二个价格栏上。但是,这不起作用,因为图表中没有注释。

下面的代码是可运行的,任何人都可以解释我如何在这样的图表上进行注释吗?

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 )。这正是我想要得到我的箭头的地方,所以我猜这个问题必须与箭头的可视化有关,而不是与它的创建有关。

1 个答案:

答案 0 :(得分:1)

您的问题是您的箭头实际上不在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