【发布时间】:2016-12-08 17:57:40
【问题描述】:
我有一个使用 Chart.js 的网页。在这个页面中,我正在渲染三个圆环图。在每个图表的中间,我想显示填充的甜甜圈的百分比。目前,我有以下代码,可以在这个Fiddle看到。
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?
标签: javascript css charts