1

我有一组数据点,我要传递给一个 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
}

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

4

2 回答 2

2

尤里卡!

默认情况下,Highcharts 将接受一系列不同类型的数据输入,包括

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

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

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

并且图表正确呈现longestArray数据。欢呼!唯一的缺点是,由于“昂贵的数据检查和长序列索引”,需要花费大量时间为更长的数组渲染数据。如果你们中的任何人知道我如何能够绕过此检查或以其他方式能够加快此数据的处理,如果您能告诉我如何,我将非常感激。

于 2013-06-24T21:39:06.603 回答
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
}
于 2013-06-18T19:20:31.753 回答