以下代码片段正在创建一个包含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 )
。这正是我想要得到我的箭头的地方,所以我猜这个问题必须与箭头的可视化有关,而不是与它的创建有关。
答案 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()