dch*_*ney 3 javascript bar-chart chart.js
我有一个条形图,它显示数据库中的数据,我需要能够为不同的数值显示不同的颜色。例如,“ loc_health”基于1到10之间的值返回,因此我需要将1显示为红色,2显示为橙色,3显示为黄色,4显示为绿色,等等。
我搜索了chart.js文档,但找不到解决方案。
var context = document.getElementById('healthRatings').getContext('2d');
window.myObjBar = new Chart(context).Bar({
labels : loc_id_grab,
datasets : [{
fillColor : ["rgba(220,220,220,0.5)"],
strokeColor : "rgba(151,187,205,1)",
pointColor : "rgba(151,187,205,1)",
pointStrokeColor : "#fff",
data : loc_health
}]
}, {
scaleOverride : true,
scaleSteps : 10,
scaleStepWidth : 1,
scaleStartValue : 0,
barShowStroke : false,
barStrokeWidth : 1,
showTooltips : false,
barValueSpacing : 2,
animation : false,
responsive : true,
maintainAspectRatio : true
});
Run Code Online (Sandbox Code Playgroud)
您可以在创建图表之前检查该值:
var context = document.getElementById('healthRatings').getContext('2d');
var colors = []
for(var i = 0; i < loc_health.length; i++){
var color;
switch(loc_health[i]){
case 1:
color = "red";
break;
case 2:
color = "orange";
break;
case 3:
color = "yellow";
break;
case 4:
color = "green";
break;
//etc..
}
colors[i] = color;
}
window.myObjBar = new Chart(context).Bar({
labels : loc_id_grab,
datasets : [{
backgroundColor: colors,
strokeColor : "rgba(151,187,205,1)",
pointColor : "rgba(151,187,205,1)",
pointStrokeColor : "#fff",
data : loc_health
}]
}, {
scaleOverride : true,
scaleSteps : 10,
scaleStepWidth : 1,
scaleStartValue : 0,
barShowStroke : false,
barStrokeWidth : 1,
showTooltips : false,
barValueSpacing : 2,
animation : false,
responsive : true,
maintainAspectRatio : true
});
Run Code Online (Sandbox Code Playgroud)
您可以通过访问window.myObjBar.datasets[0].bars[0].fillColor
属性为每个单独的柱着色,然后更新图表
在您的情况下,您可以遍历元素并相应地为每个条形上色
var bars = myObjBar.datasets[0].bars;
for(i=0;i<bars.length;i++){
var color="green";
//You can check for bars[i].value and put your conditions here
bars[i].fillColor = color;
}
myObjBar.update(); //update the chart
Run Code Online (Sandbox Code Playgroud)
工作的JsFiddle
归档时间: |
|
查看次数: |
12684 次 |
最近记录: |