ChartJS 3.0 中的generateLegend() 发生了什么?

2023-11-30

我的理解是3.0版本已经贬值了。是否有其他方法可以轻松完成图例的定制?


是的,有一种非常简单的方法可以使用以下命令向 ChartJS 3.5 添加自定义图例plugins.

下面是它如何工作的示例:

  1. 创建 DOM 结构以支持新的图例和 Chartjs 图表。
<div id="legend-id"></div>
<canvas id="chart-id"></canvas>
  1. 使用一些默认数据和选项设置图表以隐藏当前图例。
const data = {
  labels: [
    'Red',
    'Blue',
    'Yellow'
  ],
  datasets: [{
    label: 'My First Dataset',
    data: [300, 50, 100],
    backgroundColor: [
      'rgb(255, 99, 132)',
      'rgb(54, 162, 235)',
      'rgb(255, 205, 86)'
    ],
    hoverOffset: 4
  }]
};

const options = {
  plugins: {
    legend: {
        display: false
    }
  }
};

  1. 将图表(带有自定义图例)附加到您的 DOM 结构。
const context = document.querySelector("#chart-id");
const chart = new Chart(context, {
  type: "doughnut",
  data,
  options,
  plugins: [{
    beforeInit: function(chart, args, options) {
      // Make sure we're applying the legend to the right chart
      if (chart.canvas.id === "chart-id") {
        const ul = document.createElement('ul');
        chart.data.labels.forEach((label, i) => {
          ul.innerHTML += `
            <li>
              <span style="background-color: ${ chart.data.datasets[0].backgroundColor[i] }">
                ${ chart.data.datasets[0].data[i] }
              </span>
              ${ label }
            </li>
          `;
        });

        return document.getElementById("js-legend").appendChild(ul);
      }

      return;
    }
  }]  
});

另外,这里还有一个可用的 jsfiddle自定义图例!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ChartJS 3.0 中的generateLegend() 发生了什么? 的相关文章