Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用多个x/y网格动态更新chart.JS中的散点图/折线图_Javascript_Arrays_Chart.js - Fatal编程技术网

Javascript 使用多个x/y网格动态更新chart.JS中的散点图/折线图

Javascript 使用多个x/y网格动态更新chart.JS中的散点图/折线图,javascript,arrays,chart.js,Javascript,Arrays,Chart.js,我想创建一个函数,我可以发送数据推送到我的折线图。我的函数当前如下所示: function addData(label, xp1, yp1, xp2, yp2) { chart.data.labels.push(label); chart.data.datasets.data.push({x: xp1, y: yp1}, {x: xp2, y: yp2}); chart.update(); } 标签是一个字符串 xp1,xp2,yp1,yp2是双精度的 我正在运行一个将执行此函数

我想创建一个函数,我可以发送数据推送到我的折线图。我的函数当前如下所示:

function addData(label, xp1, yp1, xp2, yp2) {
  chart.data.labels.push(label);
  chart.data.datasets.data.push({x: xp1, y: yp1}, {x: xp2, y: yp2}); 
  chart.update();
}
标签是一个字符串

xp1,xp2,yp1,yp2是双精度的

我正在运行一个将执行此函数的循环。什么也没发生,我的图表还是空白的

我已经看过了,它似乎对我的情况没有帮助,而且它们的示例代码中似乎有错误

这是我的起始代码:

var ctx = document.getElementById('chart').getContext('2d');
var chart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: [''],
        datasets: [{}]
    },
    options: {}
});
这就是我希望它填写后的样子:

var ctx = document.getElementById('chart').getContext('2d');
var chart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: ['a', 'b', 'c'],
        datasets: [{
            label: 'a',
            fill: false,
            data: [
                {
                    x: 0,
                    y: 9
                }, {
                    x: 3,
                    y: 9
                }
            ]
        },
        {
            label: 'a',
            fill: false,
            data: [
                {
                    x: 3,
                    y: 7
                }, {
                    x: 5,
                    y: 7
                }
            ]
        },
        {
            label: 'c',
            fill: false,
            data: [
                {
                    x: 5,
                    y: 5
                }, {
                    x: 10,
                    y: 5
                }
            ]
        }]
    },
    options: {}
});

您需要通过以下方式更改功能:

function addData(label, xp1, yp1, xp2, yp2) {
    chart.data.labels.push(label);
    chart.data.datasets.push([{ label: label, fill: false, data: [ {x: xp1, y: yp1}, {x: xp2, y: yp2} ] }]);
    chart.update();
};

您可以通过以下方式直接访问数据并更新内容:

chart.data.datasets[0].data.push(   {x:5, y:2} ,{x:10, y:12},...,{x:50, y:25}      );

如果您希望维护系列绘制/颜色设置,这会更容易。

能否提供有关图表初始化的更多信息。我认为您的问题在于数据集,因为数据集是对象数组
dataset[{x:0,y:1,…}]
。您需要推送新数据,如
chart.data.datasets[0].data.push({x:xp1,y:yp1},{x:xp2,y:yp2})当我尝试
chart.data.datasets[0].data.push({x:xp1,y:yp1},{x:xp2,y:yp2})时它只显示一行而不是多行。有什么想法吗?谢谢你编辑你的帖子。尝试按如下方式推送数据:
chart.data.datasets.push({label:'a',fill:false,data:[{{x:xp1,y:yp1},{x:xp2,y:yp2}]})成功了!!!!多谢各位@没问题,兄弟。我为你的问题添加了一个完整的答案。你介意接受吗?谢谢