2015-02-12 60 views
1

在我的图表中,我希望更改xAxis极值取决于各个系列。 假设系列1,如果我隐藏/显示系列,xAxis的极值不应改变。它应该有一个像如果我有ignoreHiddenSeries相同的行为=假图表xAxis极端更改/修复

但对于系列2个的极限应该改变显示/隐藏系列一样,如果我有ignoreHiddenSeries =真

我怎样才能做到这一点?

我在这里做了一个jsfiddle的例子:https://jsfiddle.net/cjchLqaa/2/ 在开始xAxis有极端值0,4,系列1和2是可见的。 但是,如果我隐藏系列1,那么xAsis仍然应该和以前一样有极端。 但是对于系列2,它应该以正常方式进行更改。

的jsfiddle代码:

$(function() { 
    $('#container').highcharts({ 
    chart:{ 
     //ignoreHiddenSeries:true, 
    }, 

    xAxis: { 

    }, 

    series: [{ 
     data: [ 
      [0, 29.9], 
      [1, 71.5], 
      [2, 106.4] 
     ] 
    }, 
      { 
     data: [ 
      [2, 29.9], 
      [3, 71.5], 
      [4, 106.4] 
     ] 
    }] 
}); 


var chart=$('#container').highcharts(); 

$("#button1").click(function() { 
    var series = chart.series[0]; 

    if (series.visible) { 
     series.hide(); 

    } else { 
     series.show(); 
    } 
}); 

$("#button2").click(function() { 
    var series = chart.series[1]; 

    if (series.visible) { 
     series.hide(); 

    } else { 
     series.show(); 
    } 
}); 


}); 

回答

2
$("#button1").click(function() { 

    chart.options.chart.ignoreHiddenSeries = false; 
    var series = chart.series[0]; 

    if (series.visible) { 
     series.hide(); 

    } else { 
     series.show(); 
    } 
}); 

$("#button2").click(function() { 

    chart.options.chart.ignoreHiddenSeries = true; 
    var series = chart.series[1]; 

    if (series.visible) { 
     series.hide(); 

    } else { 
     series.show(); 
    } 
}); 
4

我会通过检查系列名称(或ID)接近此,如果符合标准,抢在x轴极端,隐藏的系列,和使用原始极端值运行setExtremes()

像这样:

function(e) { 
    e.preventDefault(); 
    var ext = this.xAxis.getExtremes(); 
    this.setVisible(); 
    if(this.name == 'Series 1') { 
     this.xAxis.setExtremes(ext.min,ext.max);  
    } 
    else { 
     this.xAxis.setExtremes(); 
    } 
} 

实施例,使用legendItemClick事件: