当前位置: 首页 > 知识库问答 >
问题:

Chart.js-在饼图上显示数据标签前导行

劳嘉实
2023-03-14

我一直在使用Chart.Js,但由于时间限制和个人对D3等人的SVG路线的偏好,我尽最大努力避免进入画布本身。

我在仪表板页面上混合了各种图表,除了一个问题外,其他一切看起来都很棒——你必须将鼠标悬停在饼图段上才能看到潜在的%或值。

对于仪表板视图,我的用户更喜欢快速查看数据段上的一些数据标签,就像Excel一样,可能更容易用图像进行解释:

https://support.office.com/en-gb/article/Display-or-hide-data-label-leader-lines-in-a-pie-chart-d7e7c62e-aaa5-483a-aa00-6d2c437df61b

我在这里发现的其他解决方案的问题是,它们只是在段中显示值,但是有些段太小,不能作为前进的方向。

还有一些解决方案总是显示工具提示,但是有很多重叠,通常看起来非常可怕。

如果legend可以在它旁边显示数据,我甚至会很高兴,但我不明白为什么更多的人没有要求相同的功能-我是不是遗漏了什么?

共有2个答案

燕宜修
2023-03-14

实际上,可以在图例中显示数据(我在工作中创建的仪表盘就是这样做的)。您只需要使用generateLabel图例标签属性即可实现这一点。

下面是一个示例,显示了图例中括号中的数据值(这是在函数返回的图例项text属性中完成的)。

generateLabels: function(chart) {
  var data = chart.data;
  if (data.labels.length && data.datasets.length) {
    return data.labels.map(function(label, i) {
      var meta = chart.getDatasetMeta(0);
      var ds = data.datasets[0];
      var arc = meta.data[i];
      var custom = arc.custom || {};
      var getValueAtIndexOrDefault = Chart.helpers.getValueAtIndexOrDefault;
      var arcOpts = chart.options.elements.arc;
      var fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);
      var stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);
      var bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);

      return {
        // here is where we are adding the data values to the legend title
        text: label + " (" + ds.data[i].toLocaleString() + ")",
        fillStyle: fill,
        strokeStyle: stroke,
        lineWidth: bw,
        hidden: isNaN(ds.data[i]) || meta.data[i].hidden,
        index: i // extra data used for toggling the correct item
      };
    });
  } else {
    return [];
  }
}

您可以在这个代码笔中看到它的作用。

濮阳立果
2023-03-14

这项功能目前还不可用,因此没有真正快速的解决方案。

 类似资料:
  • 我最近更新了我的charts.js库到最新版本(2.5.0)。这个版本不显示图表上的标签。 我有一个在《小提琴手:http://jsfiddle.net/g6fajwg8》上工作的例子。 但是,我完全按照示例中的方式定义了我的图表,但仍然看不到图表上的标签。 注意:在Google和Stackoverflow上有很多这样的问题,但其中大多数都是关于以前的版本,这些版本在它们上运行良好。

  • 我使用Chart.js库绘制条形图,我想显示工具提示不仅在条形图悬停,而且在x轴标签悬停该条形图。我找到了用于配置的方法,但它只允许我访问当前悬停栏的数组,这是没有用的。 那个么,我怎样才能访问鼠标事件,并从那个里获取位置,将其与条形标签的位置进行比较呢?还是有别的办法? 我当前的配置: 它只打印出悬停条数据,但我坚持要想出如何扩展它以满足我需要的行为。

  • 在Angular项目中,我正在使用chart.js最新版本2.9.3实现图表 我实现了圆环图,完美地堆叠条形图,现在我必须实现在y轴上包含数据标签的堆叠条形图。 从图表上看也是如此。js文档:使用chartjs插件datalabels插件。我试图在这里显示标签。我得到了cli错误:decalare module chart.js 为了解决上面的错误,我安装了“@ types/chart . js”

  • 我不知道如何用图表来做这件事。js。 请帮帮我。 我的Javascript代码: php代码:

  • 1)如何使用chart.js在折线图的X轴上只显示第一个、中间和最后一个或者只显示第一个和最后一个标签(日期)? 2) 此外,如果可能,我只想显示特定数量的垂直网格线。 代码: 折线图图像

  • 我有一个条形图,每个条形图上都有一个标签。 悬停前: 悬停后: 这是我的代码: 我使用的chartjs版本是2.7.3