我有一个使用Chart.js的网页。在这个页面中,我呈现了三个圆环图。在每张图表的中间,我想显示已填充的甜甜圈的百分比。目前,我有以下代码,可以在Fiddle中看到。Chart.js - 定位甜甜圈标签
function setupChart(chartId, progress) {
var canvas = document.getElementById(chartId);
var context = canvas.getContext('2d');
var remaining = 100 - progress;
var data = {
labels: [ 'Progress', '', ],
datasets: [{
data: [progress, remaining],
backgroundColor: [
'#8FF400',
'#FFFFFF'
],
borderColor: [
'#8FF400',
'#408A00'
],
hoverBackgroundColor: [
'#8FF400',
'#FFFFFF'
]
}]
};
var options = {
responsive: true,
maintainAspectRatio: false,
scaleShowVerticalLines: false,
cutoutPercentage: 80,
legend: {
display: false
},
animation: {
onComplete: function() {
var xCenter = (canvas.width/2) - 20;
var yCenter = canvas.height/2 - 40;
context.textAlign = 'center';
context.textBaseline = 'middle';
var progressLabel = data.datasets[0].data[0] + '%';
context.font = '20px Helvetica';
context.fillStyle = 'black';
context.fillText(progressLabel, xCenter, yCenter);
}
}
};
Chart.defaults.global.tooltips.enabled = false;
var chart = new Chart(context, {
type: 'doughnut',
data: data,
options: options
});
}
图表“运行”。但问题出在标签的渲染上。标签不是在甜甜圈中间的垂直和水平中心。标签的位置也根据屏幕分辨率而改变。您可以通过在Fiddle范围内调整图表的框架大小来查看标签更改位置。
我的问题是,我如何始终如一地将比例定位在甜甜圈中间?我的网页是一个快速响应的页面,因此具有一致的定位非常重要。但是,我不确定还有什么要做。我觉得textAlign
和textBaseline
属性不起作用,或者我误解了它们的用法。
谢谢!
你更喜欢使用你有你的小提琴的chart.js之版本,或你会考虑使用V2.1吗? –