Solución:
Use este complemento que modifiqué ligeramente que verifica si cada elemento del conjunto de datos es cero:
<script>
Chart.plugins.register({
afterDraw: function(chart) {
if (chart.data.datasets[0].data.every(item => item === 0)) {
let ctx = chart.chart.ctx;
let width = chart.chart.width;
let height = chart.chart.height;
chart.clear();
ctx.save();
ctx.textAlign = 'center';
ctx.textBaseline="middle";
ctx.fillText('No data to display', width / 2, height / 2);
ctx.restore();
}
}
});
</script>
Con esto, si todos los elementos del conjunto de datos son 0, se mostrará No data to display
en lugar del gráfico.
Aquí un ejemplo trabajando con chart.js 2.8.0
<canvas id="pieChartExample01" width="25" height="25"></canvas>
<div id="no-data">Nothing to display</div>
...
options: {
title: {
display: false,
text: 'Overall Activity'
},
animation: {
onComplete: function(animation) {
var firstSet = animation.chart.config.data.datasets[0].data,
dataSum = firstSet.reduce((accumulator, currentValue) => accumulator + currentValue);
if (typeof firstSet !== "object" || dataSum === 0) {
document.getElementById('no-data').style.display = 'block';
document.getElementById('pieChartExample01').style.display = 'none'
}
}
}
}
Violín
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)