2015-02-12 62 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事件: