javascript - chartjs 3.0 中的 generateLegend() 发生了什么?

标签 javascript chart.js chart.js3

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

最佳答案

是的,有一种非常简单的方法可以使用 plugins 将自定义图例添加到 chartJS 3.5。 .
这是它如何工作的示例:

  • 创建您的 DOM 结构以支持新的图例和 chartjs 图表。
  • <div id="legend-id"></div>
    <canvas id="chart-id"></canvas>
    
  • 使用一些默认数据和选项设置图表以隐藏当前图例。
  • 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
        }
      }
    };
    
    
  • 将图表(带有自定义图例)附加到您的 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 custom legend !

    关于javascript - chartjs 3.0 中的 generateLegend() 发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64759502/

    相关文章:

    javascript - 如何在 Chart.js Laravel 中将起始值设置为 “0”

    javascript - 工具提示与 Chart.js v2 对齐

    javascript - Chart.js 中具有线性时间刻度的折线图

    javascript - Chart.js 中的 Utils 包

    javascript - 如何使用 jQuery 将类添加到属于现有 <li> 标记的 span 元素

    使用 setInterval 的 javascript 自动刷新不起作用

    javascript - Chart.js 的意外行为

    javascript - Chart.js 版本 3 - 如何制作重叠条形图?

    javascript - 单页应用 Nginx Django Python 和端口转发

    javascript - 正则表达式匹配具有不同数字和最小长度的数字