【问题标题】:Bar labels in Legend图例中的条形标签
【发布时间】:2017-12-02 21:08:17
【问题描述】:

我的问题类似于How to show bar labels in legend in Chart.js 2.1.6?

我想输出一个饼图,但我不想创建多个数据集。我设法做到了这一点,但现在我找不到如何做到这一点。

这是我的代码示例:

 var myChart = new Chart(ctx, {
    type: type_p,
    data: {
        labels: ['Lundi','Mardi'],
        datasets: [{
            data: [50,20],
            backgroundColor: color,
            borderColor: color,
            borderWidth: 1
        }]
    }

我想要与饼图相同的图例,但使用条形图:

这是一种方法吗?

【问题讨论】:

    标签: javascript jquery charts chart.js


    【解决方案1】:

    为此,您必须根据数据集的 labels 数组生成自定义标签(使用 generateLabels() 函数)。

    legend: {
       labels: {
          generateLabels: function(chart) {
             var labels = chart.data.labels;
             var dataset = chart.data.datasets[0];
             var legend = labels.map(function(label, index) {
                return {
                   datasetIndex: 0,
                   fillStyle: dataset.backgroundColor && dataset.backgroundColor[index],
                   strokeStyle: dataset.borderColor && dataset.borderColor[index],
                   lineWidth: dataset.borderWidth,
                   text: label
                }
             });
             return legend;
          }
       }
    }
    

    将此添加到您的图表选项中

    ᴡᴏʀᴋɪɴɢ ᴇxᴀᴍᴘʟᴇ ⧩

    var ctx = canvas.getContext('2d');
    var chart = new Chart(ctx, {
       type: 'bar',
       data: {
          labels: ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi'],
          datasets: [{
             data: [1, 2, 3, 4, 5],
             backgroundColor: ['#ff6384', '#36a2eb', '#ffce56', '#4bc0c0', '#9966ff'],
             borderColor: ['#ff6384', '#36a2eb', '#ffce56', '#4bc0c0', '#9966ff'],
             borderWidth: 1
          }]
       },
       options: {
          scales: {
             yAxes: [{
                ticks: {
                   beginAtZero: true
                }
             }]
          },
          legend: {
             labels: {
                generateLabels: function(chart) {
                   var labels = chart.data.labels;
                   var dataset = chart.data.datasets[0];
                   var legend = labels.map(function(label, index) {
                      return {
                         datasetIndex: 0,
                         fillStyle: dataset.backgroundColor && dataset.backgroundColor[index],
                         strokeStyle: dataset.borderColor && dataset.borderColor[index],
                         lineWidth: dataset.borderWidth,
                         text: label
                      }
                   });
                   return legend;
                }
             }
          }
       }
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
    <canvas id="canvas"></canvas>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2015-01-22
      • 1970-01-01
      • 2022-10-03
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      相关资源
      最近更新 更多