[Chartjs]-How can I show texts only if they fit in the arc in Chart.Js 2.8.0?

2👍

May be this can work? Only adding a label when the value is above a certain threshold?

let data = [12, 19, 3, 5, 0.3, 3];
let sum = 0;

for (var i = 0; i < data.length; i++) {
  sum += data[i]
}

let ctx = document.getElementById("myChart");
let myChart = new Chart(ctx, {
  plugins: [ChartDataLabels],
  type: 'doughnut',
  data: {
    labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
    datasets: [{
      label: '# of Votes',
      data: data, 
      backgroundColor: [
        'rgba(255, 99, 132, 0.2)',
        'rgba(54, 162, 235, 0.2)',
        'rgba(255, 206, 86, 0.2)',
        'rgba(75, 192, 192, 0.2)',
        'rgba(153, 102, 255, 0.2)',
        'rgba(255, 159, 64, 0.2)'
      ],
      borderColor: [
        'rgba(255,99,132,1)',
        'rgba(54, 162, 235, 1)',
        'rgba(255, 206, 86, 1)',
        'rgba(75, 192, 192, 1)',
        'rgba(153, 102, 255, 1)',
        'rgba(255, 159, 64, 1)'
      ],
      borderWidth: 1
    }]
  },
  options: {
    plugins: {
      datalabels: {
        formatter: function(value) {
          percentage = (value / sum) * 100;
          if (percentage < 1) {
             return "";
          }
          return value + " kWh";
        }
      }
    },
    rotation: 1 * Math.PI,
    circumference: 1 * Math.PI
  }
});
<body>
  <canvas id="myChart" width="400" height="400"></canvas>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@0.6.0"></script>
</body>

Leave a comment