我可以使用两种不同的格式化程序来生成高级工具提示吗?

时间:2012-12-19 02:29:32

标签: javascript highcharts

我有一个包含两个使用命名值的数据系列的highcharts表。在我的一个系列的工具提示中,我想引用该系列中的数据点。所以这个答案中的解决方案:How to use a different formatter on Highcharts in each curve of the same graphic?对我没有帮助。我需要的不仅仅是tooltipText,我需要一个格式化程序:

一个人:

formatter: function() {
    return this.x + ': ' + this.series.name +
    '<br> $' + Highcharts.numberFormat(this.y, 0);
     }

而另一方:

formatter: function() {
    return 'In ' + this.x + ' the median value was' + this.median + 
    'and the total $' + Highcharts.numberFormat(this.y, 0);                        
 }

3 个答案:

答案 0 :(得分:31)

内部格式化程序this指的是焦点系列,您可以在格式化程序中添加if/else并为每个格式化程序返回一个字符串,如下所示。

tooltip: {
    shared: false,
    formatter: function() {
        var text = '';
        if(this.series.name == 'MSFT') {
            text = this.x + ': ' + this.series.name +
                   '<br> $' + Highcharts.numberFormat(this.y, 0);
        } else {
            text = 'In ' + this.x + ' the median value was' + this.median +
                   'and the total $' + Highcharts.numberFormat(this.y, 0);
        }
        return text;
    }
}

demo

答案 1 :(得分:2)

您可以轻松为每个系列定义工具包格式化程序 - 请参阅此处:http://api.highcharts.com/highcharts/plotOptions.series.tooltip

{
  tooltip: {
          shared: true
  },
  series: {
     name: 'some series name',
     data: mydata,
     tooltip: {
        valueSuffix: ' bar'
     }
  }
}

示例:http://jsfiddle.net/28qzg5gq/

答案 2 :(得分:-1)

这是一个例子。小提琴的例子是here

tooltip: {
            formatter: function () {
                var s = '<b>' + Highcharts.dateFormat('%A, %b %e, %Y', this.x) + '</b>';

                $.each(this.points, function () {
                    s += '<br/>1 USD = ' + this.y + ' EUR';
                });

                return s;
            }
        },