我正在使用Chartjs来显示折线图,这很好用:
// get line chart canvas
var targetCanvas = document.getElementById('chartCanvas').getContext('2d');
// draw line chart
var chart = new Chart(targetCanvas).Line(chartData);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试更改图表的数据时会出现问题.我通过使用新数据点创建图表的新实例来更新图形,从而重新初始化画布.
这很好用.但是,当我将鼠标悬停在新图表上时,如果我碰巧检查了与旧图表上显示的点相对应的特定位置,则仍会触发悬停/标签,并且突然显示旧图表.当我的鼠标位于此位置时它仍然可见,并在离开该点时消失.我不希望显示旧图表.我想完全删除它.
在加载新画布之前,我试图清除画布和现有图表.喜欢:
targetCanvas.clearRect(0,0, targetCanvas.canvas.width, targetCanvas.canvas.height);
Run Code Online (Sandbox Code Playgroud)
和
chart.clear();
Run Code Online (Sandbox Code Playgroud)
但到目前为止,这些都没有奏效.关于如何阻止这种情况发生的任何想法?
APIchart.js允许用户编辑加载到其中的数据集的点,例如:
.update( )在Chart实例上调用update()将使用任何更新的值重新渲染图表,允许您编辑多个现有点的值,然后在一个动画渲染循环中渲染它们.
.addData( valuesArray, label )在Chart实例上调用addData(valuesArray,label),为每个数据集传递一个值数组,以及这些点的标签.
.removeData( )在Chart实例上调用removeData()将删除图表上所有数据集的第一个值.
所有这些都很棒,但我无法弄清楚如何加载一个全新的数据集,消除旧的数据集.文档似乎没有涵盖这一点.