Javascript 在Chart.js中扩展数据系列时出现问题

Javascript 在Chart.js中扩展数据系列时出现问题,javascript,charts,chart.js,Javascript,Charts,Chart.js,我有一个双轴图表,有两个系列,是否需要一些特殊的数据来扩展它 当我尝试扩展它时,添加了新的xAsis标签,但没有添加yAxis数据点 function addData(chart, label, data) { chart.data.labels.push(label); chart.data.datasets.forEach((dataset) => { dataset.data.push(data); }); chart.upda

我有一个双轴图表,有两个系列,是否需要一些特殊的数据来扩展它

当我尝试扩展它时,添加了新的xAsis标签,但没有添加yAxis数据点

function addData(chart, label, data) {
    chart.data.labels.push(label);
    chart.data.datasets.forEach((dataset) => {
            dataset.data.push(data);
    });
    chart.update();
}

var yArr = [64, 1.01];

addData(myChart, 'Sat', yArr);

您应该根据yAxisID将新数据推送到chartData对象中。请尝试以下代码

 function addData(chart,label, data) {
    chart.data.labels.push(label);        

    for(var i=0; i< data.length; i++){
       for(var k=0; k< chartData.datasets.length; k++){
          if(chartData.datasets[k].yAxisID == data[i].yAxisID){
              chartData.datasets[k].data.push(data[i].value);
            }
          }
        }   
       chart.update();
       console.log(chart.data);
     }

  var yArr = [ {yAxisID:"F", value: 64},{yAxisID:"G", value: 1.01} ];
  addData(myChart,'Sat', yArr);
函数添加数据(图表、标签、数据){
图表.数据.标签.推送(标签);
对于(变量i=0;i

您应该根据yAxisID将新数据推送到chartData对象中。请尝试以下代码

 function addData(chart,label, data) {
    chart.data.labels.push(label);        

    for(var i=0; i< data.length; i++){
       for(var k=0; k< chartData.datasets.length; k++){
          if(chartData.datasets[k].yAxisID == data[i].yAxisID){
              chartData.datasets[k].data.push(data[i].value);
            }
          }
        }   
       chart.update();
       console.log(chart.data);
     }

  var yArr = [ {yAxisID:"F", value: 64},{yAxisID:"G", value: 1.01} ];
  addData(myChart,'Sat', yArr);
函数添加数据(图表、标签、数据){
图表.数据.标签.推送(标签);
对于(变量i=0;i

太好了,这很有效。谢谢然而,嵌套for语句似乎有点不雅观。有没有一种更简约的方式,我们只是推动一对有序的价值观?@OdinAnderson我同意,这看起来不雅观。这是一个轻微的改进。函数addData(chart,label,data){chart.data.labels.push(label);data.forEach(函数(dataObj){var fieldId=chartData.datasets.find(obj=>{return obj.yAxisID==dataObj.yAxisID});fieldId.data.push(dataObj.value);chart.update();})//请检查此js fillde。是的,这有所改善。我还将第一个函数更新为箭头函数函数addData(chart,label,data){chart.data.labels.push(label);data.forEach(dataObj=>{var fieldId=chartData.datasets.find(obj=>{return obj.yAxisID===dataObj.yAxisID});fieldId.data.push(dataObj.value);chart.update();})}很好,可以用。谢谢然而,嵌套for语句似乎有点不雅观。有没有一种更简约的方式,我们只是推动一对有序的价值观?@OdinAnderson我同意,这看起来不雅观。这是一个轻微的改进。函数addData(chart,label,data){chart.data.labels.push(label);data.forEach(函数(dataObj){var fieldId=chartData.datasets.find(obj=>{return obj.yAxisID==dataObj.yAxisID});fieldId.data.push(dataObj.value);chart.update();})//请检查此js fillde。是的,这有所改善。我还将第一个函数更新为箭头函数函数addData(chart,label,data){chart.data.labels.push(label);data.forEach(dataObj=>{var fieldId=chartData.datasets.find(obj=>{return obj.yAxisID==dataObj.yAxisID});fieldId.data.push(dataObj.value);chart.update();})`