Chartjs隐藏数据集图例v3

bmvo0sr5  于 2022-11-07  发布在  Chart.js
关注(0)|答案(2)|浏览(216)

我目前在网页上的图表是由Chart.js v2.5.3提供的。之前配置的图表工作得很好。代码如下:

var ctw = document.getElementById("chart-budget");
var myChart = new Chart(ctw, {
  type: 'bar',
  data: {
    labels: ["budget", "costs"],
    datasets: [{
      label: "Amount",
      data: [520980, 23397.81],
      backgroundColor: [
        'rgba(143, 211, 91, 0.2)',
        'rgba(255, 99, 132, 0.2)',
      ],
      borderColor: [
        'rgba(143, 211, 91,1)',
        'rgba(255, 99, 132, 1)',
      ],
      borderWidth: 1
    }]
  },
  options: {
    legend: {
      display: false
    },
    responsive: true,
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero: true
        },
        gridLines: {
          drawBorder: false,
        }
      }],
      xAxes: [{
        gridLines: {
          display: false,
        }
      }]
    }
  }
});

由于v3现在可用,我想切换到它。一个快速的测试揭示了一些问题,我将需要克服。其中一个问题,我挣扎的是无法隐藏数据集图例。在V2.5中,它是由options.legend.display设置为 false,但不再是。在the documentation中,我没有遇到任何东西可以帮助我。
有没有人可以建议如何在Chart.js V3中隐藏图例?
/库巴

jljoyd4f

jljoyd4f1#

配置如下选项可以解决V3版本中的问题。

options: { plugins: { legend: { display: false }, } }
zxlwwiss

zxlwwiss2#

Chart.js V3中,您可以将filter函数添加到options.plugins.legend.labels,并计算标签或其datasetIndex值,以隐藏特定图例,而不是所有图例。

options: {
  plugins: {
    legend: {
      labels: {
        filter: function(legendItem, data) {
          let label = data.datasets[legendItem.datasetIndex].label || '';
          if (typeof(label) !== 'undefined') {
            if (legendItem.datasetIndex >= 3){
              return false;
            }
          }
          return label;
        }
      }
    }
  }
}

相关问题