简体   繁体   English

如何在chartjs工具提示中显示自定义数据

[英]how display custom data in chartjs tooltip

I have created a time series graph out of two data set.我用两个数据集创建了一个时间序列图。 Now problem is there is an additional data that I would like to use and display in tooltip but I am not sure how to do it.现在的问题是我想在工具提示中使用和显示一个额外的数据,但我不知道该怎么做。 I did some search and I kind of believe that this can be achieved via callbacks but don't know how to handle it.我做了一些搜索,我有点相信这可以通过callbacks来实现,但不知道如何处理它。 Right now the tooltip displays x and y values along with it I would like to display r value as well.现在工具提示显示xy值,我也想显示r值。

 var ctx = document.getElementById('myChart').getContext('2d'); var s1 = { label: 'source', borderColor: 'blue', data: [ { x: '2020-05-11T04:58:37Z', y: 25, r:3001}, { x: '2020-05-11T04:59:17Z', y: 27, r:3002}, { x: '2020-05-11T04:59:57Z', y: 21, r:3003}, { x: '2020-05-11T05:00:37Z', y: 21, r:3004}, { x: '2020-05-11T05:01:17Z', y: 21, r:3456}, { x: '2020-05-11T05:01:57Z', y: 0.04, r:3243} ] }; var s2 = { label: 'target', borderColor: 'red', data: [ { x: '2020-05-11T04:58:37Z', y: 28, r:3234}, { x: '2020-05-11T04:59:17Z', y: 31, r:3232}, { x: '2020-05-11T04:59:57Z', y: 27, r:5332}, { x: '2020-05-11T05:00:37Z', y: 30, r:3342}, { x: '2020-05-11T05:00:57Z', y: 30, r:3234}, { x: '2020-05-11T05:01:17Z', y: 0.033, r:3343} ] }; var ctx = document.getElementById('myChart').getContext('2d'); var chart = new Chart(ctx, { type: 'line', data: { datasets: [s1, s2] }, options: { scales: { xAxes: [{ type: 'time', distribution: 'series' }] }, } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.js"></script> <canvas id="myChart" height="100"></canvas>

tooltips callbacks is your need Link info and this is your need to reach r tooltips callbacks是您需要的 链接信息,这是您到达 r 的需要

data.datasets[tooltipItem[0].datasetIndex].data[tooltipItem[0].index].r

 var ctx = document.getElementById('myChart').getContext('2d'); var s1 = { label: 'source', borderColor: 'blue', data: [ { x: '2020-05-11T04:58:37Z', y: 25, r:3001}, { x: '2020-05-11T04:59:17Z', y: 27, r:3002}, { x: '2020-05-11T04:59:57Z', y: 21, r:3003}, { x: '2020-05-11T05:00:37Z', y: 21, r:3004}, { x: '2020-05-11T05:01:17Z', y: 21, r:3456}, { x: '2020-05-11T05:01:57Z', y: 0.04, r:3243} ] }; var s2 = { label: 'target', borderColor: 'red', data: [ { x: '2020-05-11T04:58:37Z', y: 28, r:3234}, { x: '2020-05-11T04:59:17Z', y: 31, r:3232}, { x: '2020-05-11T04:59:57Z', y: 27, r:5332}, { x: '2020-05-11T05:00:37Z', y: 30, r:3342}, { x: '2020-05-11T05:00:57Z', y: 30, r:3234}, { x: '2020-05-11T05:01:17Z', y: 0.033, r:3343} ] }; var ctx = document.getElementById('myChart').getContext('2d'); var chart = new Chart(ctx, { type: 'line', data: { datasets: [s1, s2] }, options: { tooltips:{ callbacks: { title: function(tooltipItem,data) { console.log(data.datasets[tooltipItem[0].datasetIndex].data[tooltipItem[0].index].r); return "I am title"; }, label: function(tooltipItem) { return "I am content"; } } }, scales: { xAxes: [{ type: 'time', distribution: 'series' }] }, } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.js"></script> <canvas id="myChart" height="100"></canvas>

You'll have to create a custom tooltip and then append the r value to it.您必须创建一个自定义工具提示,然后为它创建 append r值。

You can read about tooltips over here您可以在此处阅读有关工具提示的信息

You can access a particular attribute of a tooltip's point like this:您可以像这样访问工具提示点的特定属性:

data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index].r

I wrote a custom callback to do this for you:)我写了一个自定义回调来为你做这个:)

 var ctx = document.getElementById('myChart').getContext('2d'); var s1 = { label: 'source', borderColor: 'blue', data: [ { x: '2020-05-11T04:58:37Z', y: 25, r:3001}, { x: '2020-05-11T04:59:17Z', y: 27, r:3002}, { x: '2020-05-11T04:59:57Z', y: 21, r:3003}, { x: '2020-05-11T05:00:37Z', y: 21, r:3004}, { x: '2020-05-11T05:01:17Z', y: 21, r:3456}, { x: '2020-05-11T05:01:57Z', y: 0.04, r:3243} ] }; var s2 = { label: 'target', borderColor: 'red', data: [ { x: '2020-05-11T04:58:37Z', y: 28, r:3234}, { x: '2020-05-11T04:59:17Z', y: 31, r:3232}, { x: '2020-05-11T04:59:57Z', y: 27, r:5332}, { x: '2020-05-11T05:00:37Z', y: 30, r:3342}, { x: '2020-05-11T05:00:57Z', y: 30, r:3234}, { x: '2020-05-11T05:01:17Z', y: 0.033, r:3343} ] }; var ctx = document.getElementById('myChart').getContext('2d'); var chart = new Chart(ctx, { type: 'line', data: { datasets: [s1, s2] }, options: { scales: { xAxes: [{ type: 'time', distribution: 'series' }] }, tooltips: { callbacks: { label: function(tooltipItem, data) { var label = data.datasets[tooltipItem.datasetIndex].label || ''; if (label) { label += ':'; } label += tooltipItem.yLabel; r = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index].r label += " r: " + r; return label; } } } } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.js"></script> <canvas id="myChart" height="100"></canvas>

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

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