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}]})代码>成功了!!!!多谢各位@没问题,兄弟。我为你的问题添加了一个完整的答案。你介意接受吗?谢谢