我有绘制烛台图表的脚本。我在这个脚本中添加了两个注释。一个是“最后数据”,显示最后一个蜡烛,第二个注释应显示未来点。但出于某种原因,它在图片上看不到。我怎样才能看到它?我试图更改图表宽度和plt.axis值,但没有找到解决方案。
#!/usr/bin/env python
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, WeekdayLocator, HourLocator, \
DayLocator, MONDAY
from matplotlib.finance import quotes_historical_yahoo, candlestick,\
plot_day_summary, candlestick2
from matplotlib.patches import Ellipse, Circle
el = Ellipse((2, -1), 0.5, 0.5)
# (Year, month, day) tuples suffice as args for quotes_historical_yahoo
date1 = ( 2013, 11, 10)
date2 = ( 2013, 12, 29)
mondays = WeekdayLocator(MONDAY) # major ticks on the mondays
alldays = DayLocator() # minor ticks on the days
weekFormatter = DateFormatter('%b %d') # e.g., Jan 12
dayFormatter = DateFormatter('%d') # e.g., 12
quotes = quotes_historical_yahoo('INTC', date1, date2)
if len(quotes) == 0:
raise SystemExit
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
candlestick(ax, quotes, width=0.6)
ax.xaxis_date()
plt.setp( plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')
dt = quotes[0][0]
ax.annotate(
'Last data',
xy=(dt+16, 24),
xytext=(dt+3, 25),
arrowprops=dict(arrowstyle='simple', fc="0.6", ec="none", patchB=el, connectionstyle="arc3,rad=0.3", facecolor='black')
)
ax.annotate(
'Future',
xy=(dt+19, 24.5),
xytext=(dt+2, 23.7),
arrowprops=dict(arrowstyle='simple', fc="0.6", ec="none", patchB=el, connectionstyle="arc3,rad=0.3", facecolor='black')
)
plt.savefig('test.png')
答案 0 :(得分:1)
您只需要更改图表上的xlimit:
ax = plt.gca()
ax.set_xlim([start_data, end_date])
plt.draw()
答案 1 :(得分:0)
编写的代码(是)在OS X,Python 2.7.5上为我工作。
绘制并标记“未来”和“最后数据”弧。
如果计算烛台,只有13个 - 如果你添加一个打印声明,你也会看到它:
quotes = quotes_historical_yahoo('INTC', date1, date2)
print len(quotes)
正如您的代码所示,11月28日之后的所有内容都是“未来日期”,因此没有相关数据 - 因此来自quotes_historical_yahoo()的回报只有13天的报价(加上周末显然有些差距)
您无法在11月28日之后注释积分,因为它们不在绘图数据中,因此呼叫失败。
答案 2 :(得分:0)
可以添加此代码作为解决方法:
line = Line2D(
xdata=(dt+19, dt+19),
ydata=(24.5, 24.5), )
ax.add_line(line) ax.autoscale_view()
现在可以创建注释: