2015-02-12 4 views
1

В моей диаграмме я хочу, чтобы изменения xAxis были зависеть от разных серий. Скажем, для серии 1, если я скрываю/показываю серию, крайности xAxis не должны меняться. Он должен иметь такое же поведение, как если у меня есть ignoreHiddenSeries = ложногодиаграмма xAxis крайности изменения/исправить

Но для серии 2 крайности должна измениться на шоу/скрыть серии, как если у меня есть ignoreHiddenSeries = True

Как я могу добиться этого?

Я сделал пример 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

Я хотел бы подойти к этому, проверяя название серии (или идентификатор), и если она отвечает критериям, захватить крайние оси х, скрыть ряд, и используйте начальные значения крайних значений для запуска 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:

Смежные вопросы