我有一個使用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嗎? –