【问题标题】:How to Update 2 dataset for 2 lines in a CharJS line graph?如何更新 ChartJS 折线图中 2 条线的 2 个数据集?
【发布时间】:2021-02-19 13:17:46
【问题描述】:
     var ctx = document.getElementById("canvas");
                var Param1Data = {
                    label: "Param1",
                    yAxisID: 'A',
                    data: chartParam1Value,
                    lineTension: 0.5,
                    fill: false,
                    borderColor: 'red'
                };

                var Param2Data = {
                    label: "Param2",
                    yAxisID: 'B',
                    data: chartParam2Value,
                    lineTension: 0.5,
                    fill: false,
                    borderColor: 'blue'
                };

                var MainDataSet = {
                    labels: chartDataValue,
                    datasets: [Param1Data, Param2Data]
                };

                var chartOptions = {
                    legend: {
                        display: true,
                        position: 'top',
                        labels: {
                            boxWidth: 80,
                            fontColor: 'black'
                        }
                    },
                    scales: {
                        yAxes: [{
                            id: 'A',
                            type: 'linear',
                            position: 'left',
                            ticks: {
                                max: 10000,
                                min: 0
                            }
                        }, {
                            id: 'B',
                            type: 'linear',
                            position: 'right',
                            ticks: {
                                max: 10000,
                                min: 0
                            }
                        }]
                    }
                };

                chart = new Chart(ctx, { type: 'line', data: MainDataSet,options: chartOptions});

               // chart = new Chart(ctx, config);  // call for canvas 
            }

当我尝试使用此功能更新这两条数据线时,它不会更新线。

    addData()
            {
                     chart.data.labels.push(chartDataValue);
        
                        chart.data.datasets.forEach((dataset) => {
                            dataset.data.push(chartParam1Value);
                        });
        
                        chart.data.datasets.forEach((dataset) => {
                            dataset.data.push(chartParam2Value);
                      });
     chart.update(); //Updating the chart
      }
  setInterval(addData, 3000); // calling update method for new datapoint

我有 2 个数据集,用于 CharJS 图中的 2 行,第一个数据插入绘制在图中很完美,但是当我尝试更新数据集时,它没有通过 addData() 函数更新数据.有人可以展示如何通过 CharJS 图中的更新功能更新 2 行吗?

【问题讨论】:

    标签: javascript graph chart.js linechart chartjs-2.6.0


    【解决方案1】:

    根据文档 (https://www.chartjs.org/docs/latest/developers/updates.html#adding-or-removing-data),在将数据添加到数组后,您必须调用图表上的更新方法来更新它,如下所示:

                 updateChart = (dataset) =>{
                    chart.data.datasets.forEach((dataset) => {
                        dataset.data.push(chartParam1Value);
                    });
    
                    chart.data.datasets.forEach((dataset) => {
                        dataset.data.push(chartParam2Value);
                    });
                    chart.update()
                 }
    

    【讨论】:

    • 我在 addData() 函数的末尾调用它。但这不是问题。问题是当我想更新 2 行的 2 个数据集时,我如何调用更新方法(你在链接中给出),即我如何更新这个----数据集:[Param1Data,Param2Data]?
    • chart.data.datasets[0].data = arrayWithUpdatedData; chart.data.datasets[1].data = arrayWithUpdatedData2; chart.update()
    • 以上评论是正确的答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    相关资源
    最近更新 更多