首页 文章

在HighCharts系列中更改数据会导致y轴爆炸

提问于
浏览
4

我在Highcharts折线图中看到了一些奇怪的行为 . 我有多个系列显示,需要让用户更改图表上所谓的“ Map 级别”,这是所有时间段的直线 . 假设正确的系列是

chart.series[i]

并且我希望它设置的新级别存储在var newMapLevel中,我正在更改该系列的数据,如下所示:

data = chart.series[i].data;
for(j=0; j<data.length; j++){
    data[j].y = newMapLevel;                    
}
chart.series[i].setData(data);

调用此函数具有所需的效果,除非新的 Map 级别y_value比所有其他系列的最高y_value大一个,在这种情况下,y轴刻度会爆炸 . 换句话说,如果y_axis标度通常为0到275,000,并且任何其他系列的最高y_value为224,000,则将新 Map 级别值设置为224,001会导致y_axis标度变为0到27500M . 是的,这是275亿 .

这可能是Highcharts中的一个错误?或者是否有更好的方法来更改系列中的数据?

我发布了一个小提琴:http://jsfiddle.net/earachefl/4FuNE/4/

2 回答

  • 0
  • 2

    这并不像我想的那样顺利 . 当您从8行作为您的线到2作为您的线时,在您输入另一个值之前,比例不会向下调整 . 也许这是一个正确方向的开始 .

    $(document).ready(function(){
    $('#clickme').click(function(){      
        var newMapLevel = $('#newMAP').val();
        if(newMapLevel){
            for(i=0; i<chart.series.length; i++){
                if(chart.series[i].name == 'Map Level'){
                    data = chart.series[i].data;
                    for(j=0; j<data.length; j++){
                        data[j].y = newMapLevel;                    
                    }
    
                   // get the extremes
                    var extremes = chart.yAxis[0].getExtremes(); 
                    //alert("dataMin: " + extremes.dataMin);
                    //alert("dataMax: " + extremes.dataMax);
    
                    // define a max YAxis value to use when setting the extremes
                    var myYMax = extremes.dataMax; 
                    if (newMapLevel >= myYMax) {
                        myYMax = Number(newMapLevel) + 1; // number conversion required
                    }
    
                    if (myYMax > chart.yAxis[0].max) {
                        alert('cabbbie'); 
                        myYMax = chart.yAxis[0].max + 1; 
                    }
    
                    //alert("myYMax: " + myYMax);
    
                    chart.yAxis[0].setExtremes(extremes.dataMin, myYMax)     
    
                     // finally, set the line data
                    chart.series[i].setData(data);                     
                }
            }
        }
    }); });
    

相关问题