Topic: Creating a bar chart using a variable for the data set
hemeleerse asked 6 years ago
To start, let me admit I'm pretty new into programming...I want to create a bar chart where the data set is read from a variable (array).That array is basically json data appended to an empty array using a for loop.
My issue: although the array is correct (which I checked in the console), the data is not displayed. The chart remains empty. Why?
Here's an extract of the code:
<script>
var MyArray = [];
var MyArrayLength = 0;
$(document).ready(function(){
$.getJSON('dayjson',function(data){
for ( var counter=data.measures.length; counter >=1 ; counter--) {
MyArrayLength = MyArray.push((data.measures[counter-1].HourUse));
};
});
});
console.log(MyArray);
var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["00-01","01-02","02-03","03-04","04-05","05-06","06-07","07-08","08-09","09-10","10-11","11-12","12-13","13-14","14-15","15-16","16-17","17-18","18-19","19-20","20-21","21-22","22-23","23-00"],
datasets: [{
label: 'Water use today',
data: MyArray,
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)',
'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)',
'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)',
'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(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(255,99,132,1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(255,99,132,1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(255,99,132,1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(255,99,132,1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
},
scaleLabel: {
display: true,
labelString: 'use (liter)'
}
}],
xAxes: [{
scaleLabel: {
display: true,
labelString: 'hour interval'
}
}]
}
}
});
</script>
FREE CONSULTATION
Hire our experts to build a dedicated project. We'll analyze your business requirements, for free.
Open
- User: Free
- Premium support: No
- Technology: General Bootstrap questions
- MDB Version: -
- Device: PC
- Browser: Chrome
- OS: Windows
- Provided sample code: No
- Provided link: No
Piotr Glejzer staff commented 6 years ago
Hi, may you try to fix path to your json file? I admit that 'dayjson' is json so maybe is wrong path. Just try something like that : dayjson.json, day.json or ./dayjson.json or ./day.json
Best, Piotr
hemeleerse commented 6 years ago
Hi, the path to the json is OK as, using a console log of variable MyArray, the data is there. So the question is: how come the array is ok in the console log while the chart displays no data at all?
Piotr Glejzer staff commented 6 years ago
I don't see the construction of JSON file so I can't do anything because your scripts are looking good.