钻井平台和返回后,Highcharts Legend的标题会发生变化吗?

时间:2012-11-16 17:32:42

标签: highcharts legend series

我在这里有问题示例代码: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代码中遗漏一些东西? 如果基于上面发布的代码的图表,我和一对夫妇有同样的问题。

非常感谢

2 个答案:

答案 0 :(得分:1)

希望这是你所需要的,

JSFiddle - Legend Name Problem

代码:

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]
           });
      }
 }

答案 1 :(得分: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并向他们添加namecolor然后你可以这样做

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],​

编辑:当你正在进行操作时,你不应该将重绘设置为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();