Chart.js chart js条形图添加动画以更改颜色

Chart.js chart js条形图添加动画以更改颜色,chart.js,Chart.js,差不多是标题,我有一个条形图,工作得很好,但我想添加一个动画,改变一个特定的酒吧颜色,然后改变回原来的颜色,但不知道如何做到这一点。我需要这只发生在一个特定的酒吧,我随机选择设置的时间间隔,而不是在所有酒吧。换句话说,单击侦听器不是解决方案。有没有办法做到这一点?您可以使用它反复调用代码,在其中交替更改随机条的颜色或重置颜色。在每个周期结束时,您还需要调用 请看下面的代码示例,看看它是如何工作的 const chart=新图表(document.getElementById(“图表”){ 输入

差不多是标题,我有一个条形图,工作得很好,但我想添加一个动画,改变一个特定的酒吧颜色,然后改变回原来的颜色,但不知道如何做到这一点。我需要这只发生在一个特定的酒吧,我随机选择设置的时间间隔,而不是在所有酒吧。换句话说,单击侦听器不是解决方案。有没有办法做到这一点?

您可以使用它反复调用代码,在其中交替更改随机条的颜色或重置颜色。在每个周期结束时,您还需要调用

请看下面的代码示例,看看它是如何工作的

const chart=新图表(document.getElementById(“图表”){
输入:“酒吧”,
数据:{
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”],
数据集:[{
标签:“我的数据集”,
数据:[65,59,80,81,56,55,40],
背景颜色:[“rgba(255,99,132,0.2)”,“rgba(255,159,64,0.2)”,“rgba(255,205,86,0.2)”,“rgba(75,192,192,0.2)”,“rgba(54,162,235,0.2)”,“rgba(153,102,255,0.2)”,“rgba(201,203,207,0.2)”,
边框颜色:[“rgb(255,99,132)”,“rgb(255,159,64)”,“rgb(255,205,86)”,“rgb(75192192)”,“rgb(54162235)”,“rgb(153102255)”,“rgb(201203207)”,
边框宽度:1
}]
},
选项:{
比例:{
雅克斯:[{
滴答声:{
贝吉纳泽罗:是的
}
}]
}
}
});
函数randomInt(最小值、最大值){
min=数学单元(min);
最大值=数学楼层(最大值);
返回Math.floor(Math.random()*(max-min+1))+min;
}
const dataset=chart.config.data.datasets[0];
const bgColors=dataset.backgroundColor.slice(0);
const borderColors=dataset.borderColor.slice(0);
让changeBarColor=true;
设置间隔(()=>{
if(changeBarColor){
设i=randomInt(0,bgColors.length-1);
dataset.backgroundColor[i]=边框颜色[i];
}否则{
dataset.backgroundColor=bgColors.slice(0);
}
chart.update();
changeBarColor=!changeBarColor;
}, 1000);

在交替更改随机条的颜色或重置颜色时,可以使用该选项重复调用代码。在每个周期结束时,您还需要调用

请看下面的代码示例,看看它是如何工作的

const chart=新图表(document.getElementById(“图表”){
输入:“酒吧”,
数据:{
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”],
数据集:[{
标签:“我的数据集”,
数据:[65,59,80,81,56,55,40],
背景颜色:[“rgba(255,99,132,0.2)”,“rgba(255,159,64,0.2)”,“rgba(255,205,86,0.2)”,“rgba(75,192,192,0.2)”,“rgba(54,162,235,0.2)”,“rgba(153,102,255,0.2)”,“rgba(201,203,207,0.2)”,
边框颜色:[“rgb(255,99,132)”,“rgb(255,159,64)”,“rgb(255,205,86)”,“rgb(75192192)”,“rgb(54162235)”,“rgb(153102255)”,“rgb(201203207)”,
边框宽度:1
}]
},
选项:{
比例:{
雅克斯:[{
滴答声:{
贝吉纳泽罗:是的
}
}]
}
}
});
函数randomInt(最小值、最大值){
min=数学单元(min);
最大值=数学楼层(最大值);
返回Math.floor(Math.random()*(max-min+1))+min;
}
const dataset=chart.config.data.datasets[0];
const bgColors=dataset.backgroundColor.slice(0);
const borderColors=dataset.borderColor.slice(0);
让changeBarColor=true;
设置间隔(()=>{
if(changeBarColor){
设i=randomInt(0,bgColors.length-1);
dataset.backgroundColor[i]=边框颜色[i];
}否则{
dataset.backgroundColor=bgColors.slice(0);
}
chart.update();
changeBarColor=!changeBarColor;
}, 1000);


…可能是一个非常昂贵的方法,但它有效…可能是一个非常昂贵的方法,但它有效
let changeBarColor = true;
setInterval(() => {
  if (changeBarColor) {
    let i = randomInt(0, bgColors.length - 1);
    dataset.backgroundColor[i] = borderColors[i];
  } else {      
    dataset.backgroundColor = bgColors.slice(0);    
  }
  chart.update();
  changeBarColor = !changeBarColor;
}, 1000);