0

我在这里有问题的示例代码:http: //jsfiddle.net/MuydK/

在我钻入和钻出后,与图表下键中的图例标题有关的问题正在发生变化。

他们应该保持“实际”和“目标”,并且正在更改为“系列 1”和“系列 2”。

$(function () {
    var chart;
    $(document).ready(function () {
        var colors = Highcharts.getOptions().colors,
        categories1 = ['1011', '1112', '1213', '1415'],
        name1 = 'Actual',

我想我可能在向下钻取配置或 setChart 代码中遗漏了一些东西?如果基于上面发布的代码的图表,我遇到了同样的问题。

非常感谢

4

2 回答 2

1

希望这是你需要的,

JSFiddle - 图例名称问题

代码:

function setChart(name, categories, data, color) {
       console.log(name, categories, data, color);
       chart.xAxis[0].setCategories(categories);
       while (chart.series.length > 0) {
            chart.series[0].remove(true);
       }
       for (var i = 0; i < data.length; i++) {
            chart.addSeries({
                name: name[i],
                data: data[i],
                color: color[i]
           });
      }
 }
于 2012-11-17T14:46:21.193 回答
0

Edit2:问题出在下面函数中的 else 语句中。

click: function() {
    var drilldown = this.drilldown;
    if (drilldown) { // drill down
        setChart(drilldown.name, drilldown.categories, [drilldown.data], drilldown.color);
    } else { // restore
        setChart(name, categories1, [data1, data2], 'white');
    }
}​

取而代之的是摆脱name1 = 'Actual'并且只拥有data1data2添加它们name然后color你可以这样做

click: function() {
    var drilldown = this.drilldown;
    if (drilldown) { // drill down
        chart.xAxis[0].setCategories(drilldown.categories);
        setChart([drilldown.data]);
    } else { // restore
        chart.xAxis[0].setCategories(categories);
        setChart([data1, data2]);
    }
}

// add code for removing series
chart.addSeries({
    data
});​

我希望你能理解,但如果你构建data1/2为一个 highcharts 对象会更容易,只需将向下钻取部分添加到它。所以你可以改变;

series: [{
    name: name1,
    data: data1,
    color: colors[0]},
{
    name: name2,
    data: data2,
    color: colors[1]}],

到:

series: [data1, data2],​

编辑:当您进行以下操作时,您不应该将 redraw 设置为true,它会快得多。添加系列也是如此。chart.redraw()在删除和添加图表之前,您无需致电。并且向后删除东西更容易。所以改变:

while (chart.series.length > 0) {
    chart.series[0].remove(true);
}

for (var i = chart.series.length; i >= 0; i--){
    chart.series[i].remove(false);
}
// add series with redraw == false
chart.redraw();
于 2012-11-16T20:41:09.157 回答