【发布时间】:2017-08-29 16:54:01
【问题描述】:
当我将鼠标悬停在 chartjs v2 的绘图区域上时,我试图渲染一条垂直线。我有一个基本的工作版本,但我还没有弄清楚每次画线时如何删除线(旧线只是保留)。
这是一个工作示例 - https://jsfiddle.net/s9gyynxp/5/
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3]
}]
}
});
// Hook into main event handler
var parentEventHandler = Chart.Controller.prototype.eventHandler;
Chart.Controller.prototype.eventHandler = function() {
var ret = parentEventHandler.apply(this, arguments);
// Draw the vertical line here
var eventPosition = Chart.helpers.getRelativePosition(arguments[0], this.chart);
this.chart.ctx.beginPath();
this.chart.ctx.moveTo(eventPosition.x, 30);
this.chart.ctx.strokeStyle = "#ff0000";
this.chart.ctx.lineTo(eventPosition.x, 340);
this.chart.ctx.stroke();
return ret;
};
注意我已经看到了其他解决方案,其中在图表画布顶部使用了第二个画布层 - 我认为这不是我的选择,因为我需要垂直线出现在图表顶部,但在我将实施的自定义工具提示下方。
任何建议都非常感谢,谢谢!
【问题讨论】:
标签: javascript chart.js