简体   繁体   English

如何在Highchart中自定义工具提示?

[英]How to customize tooltip in Highchart?

I want my tooltip to show the range of time according to the x-axis. 我希望我的工具提示根据x轴显示时间范围。
The image below shows what I want. 下图显示了我想要的内容。 So if anyone knows how can I do that, please let me know or suggest me. 所以,如果有人知道我该怎么做,请告诉我或建议我。 Thank you :) 谢谢 :)

在此输入图像描述

This is my code 这是我的代码

 Highcharts.chart('container', { chart: { type: 'areaspline' }, title: { text: '<b>Power consumption</b>' }, xAxis: { categories: [ '00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00' ] }, yAxis: { title: { text: 'Power (watt)' } }, tooltip: { borderColor: '#2c3e50', shared: true }, plotOptions: { areaspline: { marker: { enabled: true, symbol: 'circle', radius: 3, states: { hover: { enabled: true } } } }, series: { fillOpacity: 0.5 } }, series: [{ name: 'Today ', data: [3, 4, 3, 5, 4, 10, 12, 3, 4, 3, 5, 4, 10, 12, 3, 4, 3, 5, 4, 10, 12, 3, 4, 3], color: '#2ecc71', zIndex: 1 }, { name: 'Yesterday ', data: [1, 3, 4, 3, 3, 5, 4, 1, 3, 4, 3, 3, 5, 4, 1, 3, 4, 3, 3, 5, 4, 1, 3, 4], color: '#bdc3c7', zIndex: 0 }], exporting: { buttons: { contextButtons: { enabled: false, menuItems: null } }, enabled: false }, credits: { enabled: false } }); 
 <script src="https://code.highcharts.com/highcharts.js"></script> <script src="https://code.highcharts.com/modules/exporting.js"></script> <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div> 

You can build your own tooltip with the use of tooltip.formatter . 您可以使用tooltip.formatter构建自己的工具提示。 In your case, you need to edit header of the tooltip. 在您的情况下,您需要编辑工具提示的标题。

formatter: function (tooltip) {     
  const header = `<span style="color: blue;">${this.x} - ${this.x.replace(/:00/, ':59')}</span><br/>`

  return header + (tooltip.bodyFormatter(this.points).join(''))
}

example: http://jsfiddle.net/cynysyhb/ 例如: http//jsfiddle.net/cynysyhb/

Using tooltip.formatter , you have access to a lot of information about the current point(s), for example the data series and their x-axis. 使用tooltip.formatter ,您可以访问有关当前点的大量信息,例如数据系列及其x轴。

Building on Highchart's own example : 以Highchart自己的例子为基础

...
tooltip: {
    formatter: function () {
        var point = this.points[0].point,
            cats = point.series.xAxis.categories;

        var catIndex = point.index,
            currCat = cats[catIndex],  //..or simply "this.x"
            nextCat = cats[catIndex+1] || '';

        var s = '<b>' + currCat + ' - ' + nextCat + '</b>';

        $.each(this.points, function () {
            s += '<br/>' + this.series.name + ': ' +
                this.y + 'm';
        });

        return s;
    },
    shared: true
},
...

http://jsfiddle.net/dygcze6s/ http://jsfiddle.net/dygcze6s/

Highcharts allow you to pass tooltipFormatter calback that allows to pretty much define your tooltip in any way. Highcharts允许您传递tooltipFormatter calback,允许以任何方式定义您的工具提示。

http://api.highcharts.com/highcharts/tooltip http://api.highcharts.com/highcharts/tooltip

http://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/tooltip/formatter-simple/ http://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/tooltip/formatter-simple/

 tooltip: {
        useHTML: true,
        formatter: function () {
            console.log(this); // just to see , what data you can access
            return 'The value for <b>' + this.x +
                '</b> is <b>' + this.y + '</b>';
        }
    }

You would also want to set the tooltip mode to be html 您还需要将工具提示模式设置为html

http://api.highcharts.com/highcharts/tooltip.useHTML http://api.highcharts.com/highcharts/tooltip.useHTML

You may check which data you have access to inside the callback by sending it to the console from inside the tooltip formatter. 您可以通过从工具提示格式化程序内部将其发送到控制台来检查回调内部有权访问哪些数据。 If you need something else, then you can pass it along with datapoints, when creating the series. 如果您还需要其他内容,则可以在创建系列时将其与数据点一起传递。

I hope this helps. 我希望这有帮助。

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

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