В настоящее время я пытаюсь изучить Javascript, однако, похоже, я не могу исправить эту проблему:
У меня есть файл Json, заполненный данными. Мне нужны конкретные массивы за первый месяц августа (отчеты, среднее, глобальное) и вставить их (через переменную) в мою диаграмму. Итак, я получаю диаграмму с:
август
Июнь ... и т. д.
Любая помощь или советы приветствуются!
JSON Data
[{
"month": "August",
"reports": 7,
"average": 25,
"global": 20,
"percentage": 14
}, {
"month": "July",
"reports": 22,
"average": 25,
"global": 20,
"percentage": 44
}, {
"month": "June",
"reports": 12,
"average": 25,
"global": 20,
"percentage": 24
}]
JS Code
window.onload = function() {
var reports = [];
$.getJSON("data.json", function(data) {
reports = data;
});
var repaug = 7;
var avg = 25;
var global = 20;
var ctx = document.getElementById("Chart1");
var Chart1 = new Chart(ctx, {
type: 'doughnut',
data: {
labels: ["Reports", "Average PSN", "Global Average"],
datasets: [{
label: '# of reports',
data: [repaug, global, avg],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {}
})
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Внутри datasets вы можете добавить массив, поэтому сначала вам нужно выполнить цикл для вашего ответа.
Вы можете использовать метод map() для массива.
ДЕМО
let arrayData =[{"month":"August","reports":7,"average":25,"global":20,"percentage":14},{"month":"July","reports":22,"average":25,"global":20,"percentage":44},{"month":"June","reports":12,"average":25,"global":20,"percentage":24}],
datasets = arrayData.map(item => {
return {
label: `${item.month}`,
data: [item.reports, item.average, item.global],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}
}),
ctx = document.getElementById("myChart").getContext('2d');
new Chart(ctx, {
type: 'doughnut',
data: {
labels: ["Reports", "Average PSN", "Global Average"],
datasets: datasets
},
options: {
responsive: true,
legend: {
position: 'top',
},
animation: {
animateScale: true,
animateRotate: true
},
tooltips: {
callbacks: {
label: function(item, data) {
let datasets = data.datasets,
dIndex = item.datasetIndex,
index = item.index;
return `${datasets[dIndex].label} : ${data.labels[index]} : ${datasets[dIndex].data[index]}`;
}
}
}
}
});<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.min.js"></script>
<canvas id = "myChart"></canvas>@ Suvin94 Не могли бы вы сообщить мне, что вам нужно в столбчатой диаграмме?
Я пытаюсь создать ту же концепцию с диаграммой с накоплением из базы данных mysql. Является ли это возможным? Массив (из базы данных) меток, который показывает разные цвета и массив значений из базы данных.
Я до сих пор не могу найти хороший учебник для составной диаграммы с базой данных laravel mysql
Да, ты можешь. Пожалуйста, этот рабочий кодовый ключ. Это поможет вам больше настроить диаграмму с накоплением.
Привет, сэр, вы можете мне помочь с этим stackoverflow.com/questions/59401776/…
@ Suvin94 Пожалуйста, убедитесь, что я обновил кодовый ключ.
Привет, можно ли изменить его на гистограмму?