def mouse_move(self, event):
if not event.inaxes: return
if self.x is None or self.y is None: return
x, y = event.xdata, event.ydata
idx = np.searchsorted(self.x, x)
if idx >= len(self.x): return
x = self.x[idx]
y = self.y[idx]
# update the line positions self.ly.set_xdata(x)
self.lx.set_ydata(y)
self.ly.set_xdata(x)
text = []
open = self.open[idx] if self.open is not None and idx < len(self.open) else None
close = self.close[idx] if self.close is not None and idx < len(self.close) else None
high = self.high[idx] if self.high is not None and idx < len(self.high) else None
low = self.low[idx] if self.low is not None and idx < len(self.low) else None
vol = self.vol[idx] if self.vol is not None and idx < len(self.vol) else None
day = mdates.num2date(x)
if day.time() == time(0,0):
date_str = datetime.strftime(day, '%b %d %Y')
else:
date_str = datetime.strftime(day, '%b %d %Y %H:%M:%S')
text.append("{0:>5s} {1:<12s}".format('Date', date_str))
if open:
text.append("{0:>5s} {1:.2f}".format('Open', open))
if close:
text.append("{0:>5s} {1:.2f}".format('Close', close))
if high:
text.append("{0:>5s} {1:.2f}".format('High', high))
if low:
text.append("{0:>5s} {1:.2f}".format('Low', low))
if vol:
text.append("{0:>5s} {1:.2f}M".format('Vol', (float(vol)/1000000)))
self.txt.set_text('\n'.join(text))
评论列表
文章目录