[英]Chart.js update function (chart,labels,data) will not update the chart
我无法调试以下代码。 我想更新图表数据(不是在顶部添加;删除当前数据并添加全新的数据集)。 (不是)codepen 上的工作示例:
https://codepen.io/anon/pen/bvBxpr
var config = {
type: 'line',
data: {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [{
label: "My First dataset",
data: [65, 0, 80, 81, 56, 85, 40],
fill: false
}]
}
};
var ctx = document.getElementById("myChart").getContext("2d");
var myChart = new Chart(ctx, config);
labelsNew = ["Why", "u", "no", "work", "???"];
dataNew = [2, 4, 5, 6, 10];
function updateData(chart, label, data) {
removeData();
chart.data.labels.push(label);
chart.data.datasets.forEach((dataset) => {
dataset.data.push(data);
});
chart.update();
};
function removeData(chart) {
chart.data.labels.pop();
chart.data.datasets.forEach((dataset) => {
dataset.data.pop();
});
chart.update();
}
$('.button-container').on('click', 'button', updateData(myChart, labelsNew, dataNew));
我看到2个问题:
updateData()
缺少removeData(chart);
图表参数removeData(chart);
$("#btn").click(function() { updateData(myChart, labelsNew, dataNew) });
我想到了。 这有效:
function addData(chart, label, data) {
chart.data.labels = label
chart.data.datasets.forEach((dataset) => {
dataset.data = data;
});
chart.update();
}
$("#btn").click(function() {
addData (myChart, labelsNew, dataNew);
});
而不是推送数据(添加数据),需要通过“ =”分配数据。
var config = { type: 'line', data: { labels: ["January", "February", "March", "April", "May", "June", "July"], datasets: [{ label: "My First dataset", data: [65, 0, 80, 81, 56, 85, 40], fill: false }] } }; var ctx = document.getElementById("myChart").getContext("2d"); var myChart = new Chart(ctx, config); labelsNew = ["Why", "u", "no", "work", "???"]; dataNew = [2, 4, 5, 6, 10]; function addData(chart, label, data) { chart.data.labels = label chart.data.datasets.forEach((dataset) => { dataset.data = data; }); chart.update(); } function clickupdate(){ addData(myChart, labelsNew, dataNew); }
.chart-container { height: 300px; width: 500px; position: relative; } canvas { position: absolute; }
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <div class="button-container"> <button onclick="clickupdate()">Change Data</button> </div> <div class="chart-container"> <canvas id="myChart"></canvas> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.