显示没有数据的饼图的“无数据”消息

use*_*759 1 pie-chart chart.js

我下面有使用chartjs的Piechart。当没有内容可显示时,我需要在其上显示“无数据”消息。

但是我在chartjs教程中找不到这种方法。有人可以帮忙吗?

饼图HTML

<div id="canvas-holder-CT" style="width:46%;float:right;position: absolute; left: 0px; top: 700px;">
    <canvas id="chart-area-CT" width="350" height="450" style="display: block; margin-left:2em">
    </canvas>
    <center> <b><details>
      <summary>Distribution by Call Types</summary>
    </details> </b></center>
</div>
Run Code Online (Sandbox Code Playgroud)

饼图脚本

var configCT = {
    type : 'pie',
    data : {
        datasets : [{
                data : valuesCT,
                backgroundColor : coloringCT,
                label : 'Distribution by Call Types'
            }
        ],
        labels : labelsCT
    },
    options : {
        segmentShowStroke : false,
        legend : false,
        animateScale : true,
        responsive : true,
        showAllTooltips : false,
        tooltips : {
            custom : function (tooltip) {
                if (!tooltip)
                    return;
                tooltip.displayColors = false;
            }
        }
    }
};

var ctxCT = document.getElementById("chart-area-CT").getContext("2d");
if (myPieCT != null) {
    myPieCT.destroy();
}
myPieCT = new Chart(ctxCT, configCT);
Run Code Online (Sandbox Code Playgroud)

bea*_*ver 6

您是否检查过此未解决的问题

以及etimberg用户提出的相对解决方案:

Chart.plugins.register({
    afterDraw: function(chart) {
    if (chart.data.datasets.length === 0) {
        // No data is present
      var ctx = chart.chart.ctx;
      var width = chart.chart.width;
      var height = chart.chart.height
      chart.clear();

      ctx.save();
      ctx.textAlign = 'center';
      ctx.textBaseline = 'middle';
      ctx.font = "16px normal 'Helvetica Nueue'";
      ctx.fillText('No data to display', width / 2, height / 2);
      ctx.restore();
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

参见:https : //jsfiddle.net/x04ptfuu/

  • 对于像我一样遇到此问题的任何人来说,这只是一个调整。上面的 ctx.font 行对我不起作用,我不得不去掉“normal”关键字。所以改成这样对我有用: ctx.font = "36px 'Helvetica'"; (2认同)