Javascript Chart.js重新绘制正在进行渲染的图表

Javascript Chart.js重新绘制正在进行渲染的图表,javascript,charts,chart.js2,chart.js3,Javascript,Charts,Chart.js2,Chart.js3,我正在使用chart.js 3.xJavaScript库来显示图表。 我需要更新正在进行渲染的图表 我正在使用JavaScript Worker更新图表数据 for (var index=0;index < myjson.length;index++) { chart.data.datasets[index].data.push(myjson[index]); } chart.update(); for(var index=0;index=0;i--){

我正在使用
chart.js 3.x
JavaScript库来显示图表。
我需要更新正在进行渲染的图表
我正在使用JavaScript Worker更新图表数据

for (var index=0;index < myjson.length;index++) {           
    chart.data.datasets[index].data.push(myjson[index]);
}
chart.update();

for(var index=0;index
我正在做下面类似的事情来清理图表数据集

// Set the empty data and render the chart to clear the data 
for (var index=0;index < chart.data.datasets.length;index++) {           
    chart.data.datasets[index].data = [];
}
chart.update();
//设置空数据并呈现图表以清除数据
对于(var index=0;index
但我看到有几行仍在图表上,没有正确清除。
可能是连续拉伸导致了此问题。
我还尝试了
clear()
reset()
图表,但没有效果。
因此,如何正确清除图表数据并重新绘制新数据集。

使用
stop()
结束当前动画循环,
然后清除数据,并在没有动画的情况下更新图表

请参阅以下工作片段,
一旦动画进度达到50%,
动画被停止,数据被清除,图表在没有动画的情况下被更新

$(文档).ready(函数(){
var偏移量=[100100100100];
var数据=[79005400430043004300];
var ctx=document.getElementById('条形图');
风险值数据={
标签:[6月9日、6月11日、6月13日、6月15日],
数据集:[{
数据:偏移量,
背景颜色:“透明”
}, {
数据:data.map(函数(值、索引){
返回值-偏移量[索引];
}),
背景颜色:“橙色”
}]
}
var图表=新图表(ctx{
类型:'bar',
数据:数据,
选项:{
动画:{
onProgress:函数(动画){
var progress=animation.currentStep/animation.numSteps;
//确定进度是否超过50%
如果(进度>=0.5){
//停止当前动画循环
animation.chart.stop();
//删除标签和数据
对于(var i=chart.data.labels.length-1;i>=0;i--){
animation.chart.data.labels.pop();
}
对于(var i=chart.data.datasets.length-1;i>=0;i--){
animation.chart.data.datasets.pop();
}
//无动画更新
动画。图表。更新(0);
}
}
},
图例:{
显示:假
},
工具提示:{
已启用:false
},
比例:{
雅克斯:[{
是的
}]
}
}
});
});

使用
stop()
结束当前动画循环,
然后清除数据,并在没有动画的情况下更新图表

请参阅以下工作片段,
一旦动画进度达到50%,
动画被停止,数据被清除,图表在没有动画的情况下被更新

$(文档).ready(函数(){
var偏移量=[100100100100];
var数据=[79005400430043004300];
var ctx=document.getElementById('条形图');
风险值数据={
标签:[6月9日、6月11日、6月13日、6月15日],
数据集:[{
数据:偏移量,
背景颜色:“透明”
}, {
数据:data.map(函数(值、索引){
返回值-偏移量[索引];
}),
背景颜色:“橙色”
}]
}
var图表=新图表(ctx{
类型:'bar',
数据:数据,
选项:{
动画:{
onProgress:函数(动画){
var progress=animation.currentStep/animation.numSteps;
//确定进度是否超过50%
如果(进度>=0.5){
//停止当前动画循环
animation.chart.stop();
//删除标签和数据
对于(var i=chart.data.labels.length-1;i>=0;i--){
animation.chart.data.labels.pop();
}
对于(var i=chart.data.datasets.length-1;i>=0;i--){
animation.chart.data.datasets.pop();
}
//无动画更新
动画。图表。更新(0);
}
}
},
图例:{
显示:假
},
工具提示:{
已启用:false
},
比例:{
雅克斯:[{
是的
}]
}
}
});
});


谢谢,但对于我的图表,我已将
动画设置为
false
。我正在尝试使用
chart.clear()
chart.stop()
有时它确实会停止渲染,我从一开始就看到更新的图表,但有时会失败。我在这里仅使用动画来形成一个示例。但是,如果不使用动画,如何干预渲染操作?如果动画设置为false,那么它不会同步绘制吗?当图表中的实时数据更新时,为了获得最佳性能,我已在图表配置中禁用动画。我在循环中添加了一个检查,将数据推送到
chart.data.dataset
中。如果该标志为true,则我不推送数据,并通过设置
chart.data.dataset[0]。data=[]
清除数据集中的数据,然后调用
chart.update(0)
。通过这种方式工作,但有时我会看到图表未正确清除,一些数据/线在图表上。您可以共享循环例程吗?感谢我的图表,我将
动画设置为
false
。我正在尝试使用
chart.clear()
chart.stop()
有时它确实会停止渲染,我从一开始就看到更新的图表,但有时会失败。我在这里仅使用动画来形成一个示例。但如果不使用,如何干预渲染操作