Chart.js를 사용하는 웹 페이지가 있습니다. 이 페이지에서는 3 개의 도넛 형 차트를 렌더링하고 있습니다. 각 도표의 중간에 채워진 도넛의 비율을 보여주고 싶습니다. 현재 다음 코드를 가지고 있는데이 코드는 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의 버전을 사용하는 것을 선호합니까, 또는 :
사용중인 버전에,이 같은
doughnut
컨트롤러를 확장 할 수 V2.1 사용을 고려 해볼까요? –