我有一个数据点数组,我要传递给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
数据。华友世纪!唯一的缺点是,由于"在长序列中进行昂贵的数据检查和索引",为更长的数组呈现数据要花费相当长的时间。如果你们中有人知道我如何能够绕过这个检查,或者如何能够加快这些数据的处理,我将非常感谢,如果你告诉我如何。
我可以在这里看到:
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
}