Highcharts:将其他信息传递给工具提示

时间:2013-06-18 17:51:45

标签: javascript jquery highcharts

我有一系列数据点,我将其传递给看起来像

的Highcharts图表
mydata = [{
    x: 1,
    y: 3,
    nameList: ["name1", "name2"]
}, {
    x: 2,
    y: 4,
    nameList: ["name3", "name4"]
}]

我像这样构建图表:

$("#chart").highcharts("StockChart", {
    series: [{
        data: mydata
    }, {
        data: yourdata
    }]
});

现在,我希望能够从共享工具提示中访问nameList数组,我正在尝试执行以下操作:

tooltip: {
    formatter: function() {
        var s = "";
        $.each(this.points, function(i, point) {
            s += point.point.nameList;
        });
        return s;
    },
    shared: true
}

但是当使用console.log(point)检查Firebug中的点对象时,我似乎无法在其中的任何位置找到nameList条目。如何在共享系列工具提示中访问此辅助信息?感谢所有帮助。

2 个答案:

答案 0 :(得分:2)

尤里卡!

默认情况下,Highcharts会为系列数据接受几种不同类型的输入,包括

  
      
  1. 数值数组。在这种情况下,将解释数字值   和y值,将自动计算x值,从0开始   递增1,或者从plotOptions中给出的pointStart和pointInterval递增。
  2.   
  3. 具有两个值的数组数组。在这种情况下,第一个值是x值和   第二个是y值。如果第一个值是字符串,则将其应用为名称   点,并且x值按照上述规则递增。
  4.   
  5. 具有命名值的对象数组。在这种情况下,对象是点配置   对象如下所示。
  6.   

但是,类型3的处理与类型1和2不同:如果数组大于turboThreshold设置,则不会呈现类型3的数组。因此,为了解决我的问题,我只需要像这样提高turboThreshold设置:

...
plotOptions: {
    line: {
        turboThreshold: longestArray.length + 1
    }
},
...

并且图表正确呈现longestArray数据。欢呼!唯一的缺点是,由于长时间的昂贵的数据检查和索引,所以花费大量时间来为更长的阵列渲染数据。"如果你们中的任何人知道我可以绕过这个检查,或者能够加快处理这些数据的速度,如果你能让我知道如何,我将非常感激。

答案 1 :(得分:1)

我可以在这里看到:

tooltip: {
    formatter: function() {
        var s = "";
        console.log(this.points[0].point.nameList); // ["name1", "name2"] 
        $.each(this.points, function(i, point) {
            s += point.point.nameList;
        });
        return s;
    },
    shared: true
}