【发布时间】:2020-09-27 08:42:51
【问题描述】:
我试图在同一个 chartJS 中显示来自不同 ajax 调用的不同数据集。 这个想法是在连续 13 个月内每月显示不同的统计数据。 1 次 ajax 调用 = 13 个月中每个月的 1 个统计数据。 on stat 的 JSON 数据如下所示:
[{"month":"2020 年 6 月","value":0},{"month":"2020 年 5 月","value":0},{"month":"2020 年 4 月","value ":0},{"month":"2020 年 3 月","value":0},{"month":"2020 年 2 月","value":30},{"month":"2020 年 1 月"," value":182},{"month":"December 2019","value":143},{"month":"November 2019","value":111},{"month":"October 2019", "value":103},{"month":"September 2019","value":128},{"month":"August 2019","value":71},{"month":"July 2019" ,"value":129},{"month":"2019 年 6 月","value":98}]
当然,值决定了条形,月份是图表的标签。 我可以每个月显示一个统计信息,但我不能添加其他统计信息(要显示另外 3 个统计信息)。 预期结果:每月 4 条。 这是我的一个数据集的工作代码:
function getJsonDataForStat1() {
return $.ajax
({
url: 'getJsonDataForStat1',
type: 'get'
});
}
function setChart() {
$.when(getJsonDataForStat1()).done(function (stats) {
stats = JSON.parse(stats);
var data = [], labels = [];
stats.forEach(function (s) {
labels.push(s.month);
data.push(s.value);
});
var ctx = document.getElementById('graph').getContext('2d');
var graph = new Chart(ctx, {
type: 'bar',
data: {
labels: labels,
datasets: [
{
label: 'stat 1',
data: data,
backgroundColor: '#735288',
borderColor: '#3c8dbc',
borderWidth: 1
}],
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
}
});
});
}
如何添加其他 3 个? 任何帮助,将不胜感激。 非常感谢!
【问题讨论】:
-
在这种情况下,您需要 4 个数据集,每个统计数据一个。每个数据集的数据数组将是不同月份的值。
-
感谢您的回答。我已经知道了,但我无法取回每个不同数据集声明中的数据。
-
等我有几分钟的时间,我会写一些生成数据集的示例代码。
-
尝试在将标签和数据集作为参数的单独函数中创建图表。然后在每个 ajax 请求完成后获取图表并将数据集推送到其中 -
graph.data.datasets.push(yourDataset)。在您的情况下,重要的是不要清除以前的数据集。 -
感谢 Martin M。我已经尝试了您的解决方案,但是当我尝试将数据推送到之前创建的空图表中时没有任何反应。也许我错过了一些让图表更新的东西?
标签: javascript json ajax chart.js