Highcharts:在工具提示格式化器中是否可以将系列与外部变量进行比较?

时间:2013-04-04 03:41:01

标签: highcharts tooltip

我想将一个系列与具有相同x轴但y值不同的外部变量进行比较。为了更容易解释问题,我们提供了示例代码here

数据系列

series: [{data: [5, 4, 5, 7, 8, 6, 3, 6, 7, 4, 8, 9]},
   {data: [4, 6, 7, 9, 5, 9, 12, 11, 9, 7, 6, 5]}]

,外部变量是

var extdata = [2,2,2,1,0,0,0,1,1,2,2,2];

它们共享相同的x轴(本例中为Jan,Feb,...,Dec)。假设当一个月份的系列中的数据点加上外部变量中的相应条目至少为10时,我想显示工具提示“max”,否则保留总和的数值,以便3月份的工具提示读取< / p>

March:
Series 1: 7
Series 2: 9

并且在四月读取

April:
Series 1: 8
Series 2: Max

是否可以仅使用工具提示格式化程序执行此操作?如果不是这样,怎么能实现呢?谢谢!

2 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点,但我能想到的最简单的方法是格式化你的extdata:

var extdata = {'Jan':2,
           'Feb':2,
           'Mar':2,
           'Apr':1,
           'May':0,
           'Jun':0,
           'July':0,
           'Aug':1,
           'Sep':1,
           'Oct':2,
           'Nov':2,
           'Dec':2};

然后在您的工具提示功能中,您可以像这样引用它:

formatter: function () {
        var s = '<b>' + this.x + '</b>';
        var month = this.x;
            $.each(this.points, function (i, point) {
                var total = point.y + extdata[month];
                s += '<br/>' + point.series.name + ': ' + (total>=10?'max':point.y);
            });
        return s;
    },

http://jsfiddle.net/3uhge/

通过索引月份上的extdata,您可以避免计算出您正在盘旋的点。如果你想通过迭代寻找月份名称的类别,你可以解决这个问题。

答案 1 :(得分:0)

对于分类,SteveP的答案非常好。但如果您不想格式化数据,请使用以下内容:

s+= '<br/>Ext data: ' + extdata[this.points[0].point.x]; 

其中this.points[0].point.x等于外部数据索引的索引。 jsFiddle


但是,如果您的xAxis未被分类,则可以按照this.x中的{{1}}获取索引jsFiddle