私はChart.jsを使用しているWebページを持っています。このページでは、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のバージョンを使用することを好むか、またはV2.1の使用を検討しますか? –