简体   繁体   English

如何在 Chart.JS 2.0 上使用 tooltipTemplate

[英]How to use the tooltipTemplate on Chart.JS 2.0

I am trying to use the doughnut chart with multiple datasets and also use the tooltipTemplate feature to customize the text inside the tooltips but nothing works.我正在尝试将圆环图与多个数据集一起使用,并使用 tooltipTemplate 功能自定义工具提示内的文本,但没有任何效果。 This worked in the previous Chart js version but that doesn't support multiple datasets.这在以前的 Chart js 版本中有效,但不支持多个数据集。 Can anyone help?任何人都可以帮忙吗? Below is my code:下面是我的代码:

options: {
    tooltips: {
        tooltipTemplate: "<%if (label){%><%=value%><%} else {%> No data <%}%>",
    },
}

As potatopeelings has mentioned in the comments, you have to set a callback for the tooltip.正如potatopeelings 在评论中提到的,您必须为工具提示设置回调。

Here is an example:下面是一个例子:

options: {
  tooltips: {
    callbacks: {
      label: function(tooltipItem, data) {
        var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || 'Other';
        var label = data.labels[tooltipItem.index];
        return datasetLabel + ': ' + label;
      }
    }
  }
}

live demo现场演示

 var ctx = document.getElementById("myChart"); var myChart = new Chart(ctx, { type: 'doughnut', data: { labels: ["Men", "Women", "Unknown"], datasets: [{ label: 'Sweden', data: [60, 40, 20], backgroundColor: ['rgba(158, 216, 202, 0.75)', 'rgba(255, 150, 162, 0.75)', 'rgba(160, 160, 160, 0.75)'] }, { label: 'Netherlands', data: [40, 70, 10], backgroundColor: ['rgba(158, 216, 202, 0.5)', 'rgba(255, 150, 162, 0.5)', 'rgba(160, 160, 160, 0.5)'] }, { data: [33, 33, 34], backgroundColor: ['rgba(158, 216, 202, 0.25)', 'rgba(255, 150, 162, 0.25)', 'rgba(160, 160, 160, 0.25)'] }] }, options: { tooltips: { callbacks: { label: function(tooltipItem, data) { var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || 'Other'; var label = data.labels[tooltipItem.index]; return datasetLabel + ': ' + label; } } } } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.2/Chart.min.js"></script> <canvas id="myChart" width="400" height="200"></canvas>

The Chart.js 1.x tooltipsTemplate is equivalent to options.tooltips.callbacks.title in Chart.js 2.x: Chart.js 1.x tooltipsTemplate 等效于 Chart.js 2.x 中的options.tooltips.callbacks.title

 var ctx = document.getElementById("myChart"); var myChart = new Chart(ctx, { type: 'doughnut', data: { labels: [ "Men", "Women", "Unknown" ], datasets: [{ label: 'Sweden', data: [60, 40, 20], backgroundColor: [ 'rgba(158, 216, 202, 0.75)', 'rgba(255, 150, 162, 0.75)', 'rgba(160, 160, 160, 0.75)' ] }, { label: 'Netherlands', data: [40, 70, 10], backgroundColor: [ 'rgba(158, 216, 202, 0.5)', 'rgba(255, 150, 162, 0.5)', 'rgba(160, 160, 160, 0.5)' ] }, { data: [33, 33, 34], backgroundColor: [ 'rgba(158, 216, 202, 0.25)', 'rgba(255, 150, 162, 0.25)', 'rgba(160, 160, 160, 0.25)' ] }] }, options: { tooltips: { callbacks: { label: function(tooltipItem, data) { return 'This value ' + tooltipItem.yLabel; }, title: function(tooltipItem, data) { return 'The tooltip title ' + tooltipItem[0].xLabel; } } } } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.2/Chart.min.js"></script> <canvas id="myChart" width="400" height="200"></canvas>

You have to set options for tooltip mode to label for showing multiple tooltip您必须将工具提示mode options设置为label以显示多个工具提示

options: {
    tooltips: {
        mode : 'label'
    }
}

if you want to hide the label you can simply try this如果你想隐藏标签,你可以简单地试试这个

options = 
  {                       
    tooltips :{          
      titleFontSize : 0,
      titleMarginBottom:-0.5
    }
  }

tooltip reference https://www.chartjs.org/docs/latest/configuration/tooltip.html工具提示参考https://www.chartjs.org/docs/latest/configuration/tooltip.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM