【问题标题】:How do I create a legend for a bar chart?如何为条形图创建图例?
【发布时间】:2023-03-30 20:58:01
【问题描述】:

如何创建如下图例:

到目前为止,我有以下内容:

我不知道如何为图例指定标签。他们也没有提供示例。

https://www.chartjs.org/docs/latest/configuration/legend.html

到目前为止,我有以下代码:

var topClickSourcesChart = new Chart('dashboard-click-source-chart', {
    type: 'bar',
    data: {
      labels: ["Facebook","Google","NONE",],
      datasets: [{
        data: [10,5,3,],
        backgroundColor: ['#4D90C3', '#866DB2', '#EA6F98', '#61BDF6', '#768BB7'],
      }],
    },
    options: {
        scales: {
            xAxes: [{
                display: false,
            }]
        },
        legend: {
            position: 'right',
            labels: {
                boxWidth: 10,
            }
        }
    }
});

【问题讨论】:

    标签: javascript charts chart.js


    【解决方案1】:

    要显示图例,您需要设置datasetlabel 属性,因此可以通过如下所示的代码创建图表来构建您期望的输出类型。小提琴 -> https://jsfiddle.net/6nkcx8sq/

    var topClickSourcesChart = new Chart('dashboard-click-source-chart', {
        type: 'bar',
        data: {
          labels: ["Number of users"],
          datasets: [{
            label: 'Facebook',
            data: [10],
            backgroundColor: '#4D90C3',
          },
          {
            label: 'Instagram',
            data: [15],
            backgroundColor: '#866DB2',
          },
          {
            label: 'Twitter',
            data: [7],
            backgroundColor: '#EA6F98',
          }],
        },
        options: {
            scales: {
                xAxes: [{
                    display: false,
                }],
                yAxes: [{
                ticks: {
                    beginAtZero: true
                }
            }]
            },
            legend: {
                position: 'right',
                labels: {
                    boxWidth: 10,
                }
            }
        }
    });
    

    【讨论】:

    • 谢谢。如果backgroundColor 必须是数据集的一部分,则很难为数据编写循环。
    【解决方案2】:

    我能够通过以下方式获得它,但由于 backgroundColor 必须在 dataset 内,这对循环来说很痛苦。

    var topClickSourceChart = new Chart('dashboard-click-source-chart', {
        type: 'bar',
        data: {
          labels: ["Facebook","Google","NONE",],
          datasets: [
              {label: "Facebook", data: [10]},{label: "Google", data: [5]},{label: "NONE", data: [3]},
          ]
        },
        options: {
            scales: {
                xAxes: [{
                    display: false,
                }],
                yAxes: [{
                    ticks: {
                        beginAtZero: true,
                    }
                }]
            },
            legend: {
                position: 'right',
                labels: {
                    boxWidth: 10,
                }
            }
        }
    });
    if (topClickSourceChart.data.datasets.length > 0) topClickSourceChart.data.datasets[0].backgroundColor = '#4D90C3';
    if (topClickSourceChart.data.datasets.length > 1) topClickSourceChart.data.datasets[1].backgroundColor = '#866DB2';
    if (topClickSourceChart.data.datasets.length > 2) topClickSourceChart.data.datasets[2].backgroundColor = '#EA6F98';
    if (topClickSourceChart.data.datasets.length > 3) topClickSourceChart.data.datasets[3].backgroundColor = '#61BDF6';
    if (topClickSourceChart.data.datasets.length > 4) topClickSourceChart.data.datasets[4].backgroundColor = '#768BB7';
    

    这里是 JSP/JSTL 循环:

    data: {
      labels: [<c:forEach items="${clickSources}" var="cs">"${cs.key}",</c:forEach>],
      datasets: [
          <c:forEach items="${clickSources}" var="cs">{label: "${cs.key}", data: [${cs.value}]},</c:forEach>
      ]
    },
    

    我仍然找不到使条形顶部变圆的方法。

    【讨论】:

    • 无法使用 chart.js 圆条,但您可以使用 this plugin。您可以将cornerRadius: 20添加到选项中,然后将js文件复制到您的项目中并包含它们。
    • @Alien Neat!但它也使底角也变圆了。无法指定border-top-left-radiusborder-top-right-radius
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2015-05-29
    • 1970-01-01
    • 2021-12-28
    • 2020-01-12
    • 2018-08-19
    • 2018-05-27
    相关资源
    最近更新 更多