Tôi có một trang web đang sử dụng Chart.js. Trong trang này, tôi đang vẽ ba biểu đồ bánh rán. Ở giữa mỗi biểu đồ, tôi muốn hiển thị tỷ lệ phần trăm của bánh rán được lấp đầy. Hiện tại, tôi có đoạn mã sau, có thể thấy trong số Fiddle này.Chart.js - Định vị nhãn Donut
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
});
}
Biểu đồ "chạy". Nhưng vấn đề là với việc kết xuất nhãn. Nhãn không theo chiều dọc và chiều ngang ở giữa bánh rán. Vị trí của nhãn cũng thay đổi dựa trên độ phân giải màn hình. Bạn có thể thấy vị trí thay đổi nhãn bằng cách thay đổi kích thước khung mà các biểu đồ được hiển thị trong phạm vi Fiddle.
Câu hỏi của tôi là, làm thế nào để tôi liên tục định vị phần trăm ở giữa bánh rán? Trang của tôi là một trang đáp ứng nên có vị trí nhất quán là quan trọng Tuy nhiên, tôi không biết phải làm gì khác. Tôi cảm thấy như các thuộc tính textAlign
và textBaseline
không hoạt động hoặc tôi hiểu nhầm cách sử dụng của chúng.
Cảm ơn!
Bạn có thích sử dụng các phiên bản của Chart.JS mà bạn có trên fiddle của bạn, hoặc bạn có cân nhắc sử dụng V2.1 không? –