Я хотел бы нарисовать вертикальную линию полной высоты на графике Dygraph, который следует за точным положением x курсора (примечание: я хотел бы, чтобы он следовал за курсором между точками, а не просто привязывался к точкам)
Есть ли у Dygraphs опция обратного вызова, которая позволила бы это?
В качестве бонуса можно ли заставить его играть красиво с синхронизацией?
До сих пор я пытался добавить слушатель события mousemove на холст, чтобы нарисовать линию для каждого события mousemove. В результате получается просто засорить сюжет, потому что я не могу очистить предыдущие нарисованные линии, они просто накапливаются при каждом событии перемещения мыши!
Любая помощь высоко ценится.
Приветствия
P
edit: Возможно, я добился определенного прогресса. Это смешно, но дает визуальный эффект линии, следующей за курсором. Тем не менее, он также перезаписывает поведение выделения точек на 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();
});