如果数据集不是动态的,或者是静态的,我们可以根据自己的意愿在chart.js库中应用各种颜色
var sub1= {
label: 'sub1',
data: sub1-data,
backgroundColor: '#3498db'
};
var girlsData = {
label: 'sub2',
data: sub2-data,
backgroundColor: '#16a085'
};
但是数据集是从ajax以JSON
格式生成的。
无论其中有多少个数据集,如何将每种颜色分配给每个标签?因此,我在定义变量时应用了背景色。它显示在图表中,但未显示标签名称
backgroundColor: ['red', 'blue', 'green', 'yellow', 'cyan'],
它对每个主题仅考虑一种颜色。它必须根据图表格式区分每个主题,不是吗?如何将每种主题颜色分配给标签,如图所示
var data = [{"0":"Nepali","1":"4","sub":"Nepali","gpa":"4"},{"0":"English","1":"3","sub":"English","gpa":"3"},{"0":"Math","1":"3","sub":"Math","gpa":"3"},{"0":"Science","1":"2","sub":"Science","gpa":"2"},{"0":"Social_Studies","1":"5","sub":"Social_Studies","gpa":"5"}]
window.onload=function(){
var sub = [];
var gpa = [];
for(var i in data) {
sub.push(data[i].sub);
gpa.push(data[i].gpa);
}
var densityCanvas = document.getElementById('student');
var subData = {
label: sub,
data: gpa,
backgroundColor: ['red', 'blue', 'green', 'yellow', 'cyan'],
};
var planetData = {
labels: sub,
datasets: [subData]
};
var chartOptions = {
title: {
display: true,
text: 'GPA Mark Figure'
},
scales: {
yAxes: [{
ticks: {
fixedStepSize: 1,
beginAtZero: true
}
}],
},
};
var barChart = new Chart(densityCanvas, {
type: 'bar',
data: planetData,
options: chartOptions
});
}
<html>
<head>
<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js'></script>
</head>
<body>
<canvas id='student'></canvas>
</body>
</html>
答案 0 :(得分:1)
与其仅设置一个数据集,不如对每个不同的数据(Nepali,...)使用一个数据集,此实现的缺点是您将丢失x标签。
var data = [{"0":"Nepali","1":"4","sub":"Nepali","gpa":"4"},{"0":"English","1":"3","sub":"English","gpa":"3"},{"0":"Math","1":"3","sub":"Math","gpa":"3"},{"0":"Science","1":"2","sub":"Science","gpa":"2"},{"0":"Social_Studies","1":"5","sub":"Social_Studies","gpa":"5"}]
window.onload = function() {
var subData = [];
var colors = ['red', 'blue', 'green', 'yellow', 'cyan'];
for (var i in data) {
subData.push({
label: data[i].sub,
backgroundColor: colors[i],
data: [data[i].gpa]
});
}
var densityCanvas = document.getElementById('student');
var planetData = {
labels: [''],
datasets: subData
};
var chartOptions = {
title: {
display: true,
text: 'GPA Mark Figure'
},
scales: {
yAxes: [{
ticks: {
fixedStepSize: 1,
beginAtZero: true
}
}],
},
};
var barChart = new Chart(densityCanvas, {
type: 'bar',
data: planetData,
options: chartOptions
});
}
<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js'></script>
<canvas id='student'></canvas>