我正在使用React ChartJS 2创建一些图形,但是我想在它们的顶部显示一个带有百分比的标签,当我将它们悬停在它们的实数上时。我发现您可以使用options对象上的上下文来做类似的事情。
var options = {
tooltips: {
enabled: false
},
plugins: {
datalabels: {
formatter: (value, ctx) => {
let datasets = ctx.chart.data.datasets;
if (datasets.indexOf(ctx.dataset) === datasets.length - 1) {
let sum = datasets[0].data.reduce((a, b) => a + b, 0);
let percentage = Math.round((value / sum) * 100) + '%';
return percentage;
} else {
return percentage;
}
},
color: '#fff',
}
}
};
var ctx = document.getElementById("pie-chart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'pie',
data: {
datasets: data
},
options: options
});
就像这样,但是我的问题是我无法在选项内使用上下文。
有人知道该怎么做吗?
答案 0 :(得分:1)
您无需手动将context
传递给datalabels的formatter
函数,因为该插件会自行处理。
这是饼图的working example,上面指定了选项。
但是,如果要通过其他功能访问图表的context
,则希望将其传递给options
,则可以使用this.chart.ctx
通过图表实例获取它。
var options = {
animation: {
onComplete: function () {
var chartInstance = this.chart;
var ctx = chartInstance.ctx; // chart context
}
}
};