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条目。 如何在共享系列工具提示中访问此辅助信息? 所有帮助表示赞赏。
找到了!
默认情况下,Highcharts将接受一系列数据的几种不同类型的输入,包括
- 一组数值。 在这种情况下,将解释数字值和y值,并自动计算x值,从0开始递增1,或者从plotOptions中给出的pointStart和pointInterval开始。
- 具有两个值的数组数组。 在这种情况下,第一个值是x值,第二个值是y值。 如果第一个值是字符串,则将其应用为点的名称,并按照上述规则递增x值。
- 具有命名值的对象数组。 在这种情况下,对象是点配置对象,如下所示。
但是,类型3的处理与类型1和2不同:如果数组大于turboThreshold设置,则不会呈现类型3的数组。 因此,为了解决我的问题,我只需要像这样提高turboThreshold设置:
... plotOptions: { line: { turboThreshold: longestArray.length + 1 } }, ...
并且图表正确呈现longestArray
数据。 欢呼! 唯一的缺点是,由于“长序列中的昂贵数据检查和索引”,为更长的arrays渲染数据需要花费大量时间。 如果你们中的任何人知道我怎么能绕过这个检查或者能够加快处理这些数据的话,如果你让我知道如何,我将非常感激。
我在这里可以看到:
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 }