【发布时间】:2019-11-03 10:51:17
【问题描述】:
我想在 Dygraph 图上绘制一条完全高度的垂直线,该线跟随光标的精确 x 位置(注意:我希望它跟随点之间的光标,而不仅仅是捕捉到点)
是否有 Dygraphs 提供的回调选项允许这样做?
作为奖励,是否有可能让它与同步配合得很好?
到目前为止,我已经尝试在画布上添加一个 mousemove 事件侦听器,以便在每个 mousemove 事件上画一条线。这最终只会堵塞情节,因为我无法清除之前绘制的线条,它们只是随着每个 mousemove 事件而积累!
非常感谢任何帮助。
干杯,
P
edit:我可能已经取得了一些进展。这很hacky,但确实给出了光标后一行的视觉效果。但是,它也覆盖了 Dygraphs 的点突出行为。我仍然需要点突出显示来同步和显示图例中的最近点值。
const plot = new Dygraph(...)
function getCursorPosition(canvas, event) {
const rect = canvas.getBoundingClientRect();
const x = event.clientX - rect.left;
const y = event.clientY - rect.top;
return [x, y]
}
canvas.addEventListener('mousemove', function(e) {
// redraw the plot
const xrange = plot.xAxisRange();
plot.updateOptions({dateWindow: xrange});
// add a line
const [x, y] =getCursorPosition(canvas, e);
const { height } = canvas;
ctx.beginPath();
ctx.moveTo(x, 0);
ctx.lineTo(x, height);
ctx.closePath();
ctx.stroke();
});
【问题讨论】:
标签: javascript dygraphs