Так что я думаю, что есть несколько проблем с вашим кодом.Сначала я создал объект, похожий на скриншот, который вы опубликовали для ваших данных:
let data = [{
"rangeLab": "10-15",
"rangeVal": 220.763
}, {
"rangeLab": "15-20",
"rangeVal": 128.554
}, {
"rangeLab": "20-25",
"rangeVal": 150
}];
Чтобы получить его в нужном формате, я зациклился на каждом объекте в массиве и указал «x», чтобызначение первого объекта и y - значение второго объекта:
$.each(data, function(key, value) {
dataPoints.push({
x: value[Object.keys(value)[0]],
y: value[Object.keys(value)[1]]
});
});
Это дало мне объект dataPoints
в правильном формате, ожидаемом CanvasJS:
[{"x":"10-15","y":220.763},{"x":"15-20","y":128.554},{"x":"20-25","y":150}]
Следующая проблема состоит в том, что CanvasJS, похоже, ожидает Number
для значений x
и y
.Чтобы сделать то, что вы хотите, я думаю, вам нужно использовать свойство label
.Таким образом, я изменил код цикла на:
$.each(data, function(key, value) {
dataPoints.push({
label: value[Object.keys(value)[0]],
y: value[Object.keys(value)[1]]
});
});
И затем он, казалось, правильно отображался.
Рабочий пример: https://jsfiddle.net/nzr5ds12/10/