【问题标题】:How can I hide tooltip in Chart.js on a specific data label?如何在 Chart.js 中隐藏特定数据标签上的工具提示?
【发布时间】:2018-01-08 09:18:45
【问题描述】:

每当单击对象的名称为“某物”时,我都会尝试在 Chart.js 中隐藏工具提示。我已经试过了:

  this.doughnutChart = new Chart(this.doughnutCanvas.nativeElement, {
  type: 'doughnut',
  data: {
    datasets: [{
      label: _.map(this.dataService.AmTimeSlots, 'ProjectName'),
      data: _.map(this.dataService.AmTimeSlots, 'Duration'),
      backgroundColor: _.map(this.dataService.AmTimeSlots, 'Color'),
      hoverBackgroundColor: _.map(this.dataService.AmTimeSlots, 'HoverColor'),
      borderColor: _.map(this.dataService.AmTimeSlots, 'BorderColor'),
      borderWidth: 1.5
    },
    {
      label: _.map(this.dataService.PmTimeSlots, 'ProjectName'),
      data: _.map(this.dataService.PmTimeSlots, 'Duration'),
      backgroundColor: _.map(this.dataService.PmTimeSlots, 'Color'),
      hoverBackgroundColor: _.map(this.dataService.PmTimeSlots, 'HoverColor'),
      borderColor: _.map(this.dataService.PmTimeSlots, 'BorderColor'),
      borderWidth: 1.5
    }],
  },
  options: {
    elements: {
      arc: {
        roundedCornersFor: 0
      }
    },
    segmentShowStroke: false,
    responsive: true,
    maintainAspectRatio: true,
    legend: {
      display: false
    },
    onClick: this.chartClick.bind(this),
    cutoutPercentage: 65,
    tooltips: {
      filter: function (tooltipItem) {
        if (tooltipItem.xLabel == "Free Slot") {
          return false;
        } else {
          return true;
        }
      },
      callbacks: {
        label: function (tooltipItems, data) {
        return data.datasets[tooltipItems.datasetIndex].label[tooltipItems.index];
        },
        afterLabel: function (tooltipItems, data) {
        return Math.floor(data.datasets[tooltipItems.datasetIndex].data[tooltipItems.index] / 6) + 'h ' + data.datasets[tooltipItems.datasetIndex].data[tooltipItems.index] * 10 % 60 + 'm';
        }
      }
    }
  },
  config: {
    data: this.dataService,
    settings: this.settingsService
  }
});

上面的代码运行良好。它成功隐藏了工具提示的文本,但问题是黑色标签/边框仍然存在。怎么隐藏?

【问题讨论】:

    标签: javascript typescript canvas chart.js


    【解决方案1】:

    你可以简单地filter工具提示:

    options: {
        tooltips: {
           filter: function (tooltipItem, data) {
               var label = data.labels[tooltipItem.index];
               if (label == "Red") {
                 return false;
               } else {
                 return true;
               }
           }
        }
    }
    

    查看这个 jsfiddle:https://jsfiddle.net/beaver71/ndc2uao2/

    【讨论】:

    • 它没有隐藏黑色标签/背景所以效果和我的代码一样
    • 你检查过了吗?没事吧?
    • 我看到它在小提琴中工作,但不知何故它在我的应用程序中不起作用,可能的原因是什么?
    • xLabel 在我的情况下是空的,可能是因为我使用的是圆环图?
    • 尝试分享您的代码(尽可能完整),例如在 jsfiddle 中
    【解决方案2】:

    Chart.js 3 更新:

    options: {
      plugins: {
        tooltip: {
           filter: function (tooltipItem, data) {
               return tooltipItem.label === "Red";
           }
        }
      }
    }
    

    【讨论】:

    • 即使代码看起来很简单,也应该有一个解释。例如,想法/要点是什么?发生了什么变化?这种(突破性的)变化背后有什么故事吗?等等。也许链接到官方声明?来自the Help Center“...总是解释为什么你提出的解决方案是合适的以及它是如何工作的”。请通过editing (changing) your answer 回复,而不是在 cmets 中(without "Edit:"、"Update:" 或类似的 - 答案应该看起来像是今天写的)。
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2016-08-25
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    相关资源
    最近更新 更多