【发布时间】:2019-05-11 22:11:02
【问题描述】:
我一直在使用 Chart JS 文档,但我认为这可能更多是基于问题的计算机科学/数学。我正在尝试绘制一条从图表底部延伸到最高数据点顶部的线。这是一个工作代码示例的链接:https://stackblitz.com/edit/react-pvzbwc
这个想法是让图表看起来像这样,点正好在数据的顶部结束:https://i.stack.imgur.com/L8d0H.jpg
以下是我的 after draw 钩子:
// draw a line when someone hovers over a data point
afterDatasetDraw: (chart) => {
// console.log(chart)
if (chart.tooltip._active && chart.tooltip._active.length) {
const activePoint = chart.tooltip._active[0];
console.log(activePoint.tooltipPosition())
const ctx = chart.ctx;
const y_axis = chart.scales['y-axis-0'];
const x = activePoint.tooltipPosition().x;
const yData = activePoint._chart.config.data.datasets[activePoint._datasetIndex].data[activePoint._index].y;
const topY = y_axis.top;
const bottomY = y_axis.bottom;
// draw line
ctx.save();
ctx.beginPath();
ctx.moveTo(x, topY);
ctx.lineTo(x, bottomY);
ctx.lineWidth = 2;
ctx.strokeStyle = '#000';
ctx.stroke();
ctx.restore();
}
}
当我需要在顶部画一条直线时效果很好,但当我只想在最高数据点的顶部看到它时就不行了。我注意到 topY 是一个静态不变的数字。我想知道是否有一种方法可以根据图表的笛卡尔点计算顶部位置?
绝对赞赏任何见解。
【问题讨论】:
标签: javascript html5-canvas chart.js react-chartjs