Highcharts 设置导航器最小缩放

Highcharts 设置导航器最小缩放,highcharts,highstock,Highcharts,Highstock,我正在尝试设置图表的最小缩放(最大范围)。基本上,我试图做与minRange属性相反的事情。我为这个问题挣扎了一段时间。我有一个“”,但我不喜欢它,此解决方案允许用户选择大于“最大范围”的范围,并立即更正它 可能的解决方案 $(函数(){ var-lastMin; var lastMax; var maxRange=12*30*24*3600*1000;//12个月 $(“#容器”).highcharts('StockChart'{ 滚动条:{ 利维德劳:错 }, xAxis:{ 活动:{ 余弦

我正在尝试设置图表的最小缩放(最大范围)。基本上,我试图做与minRange属性相反的事情。我为这个问题挣扎了一段时间。我有一个“”,但我不喜欢它,此解决方案允许用户选择大于“最大范围”的范围,并立即更正它

可能的解决方案

$(函数(){
var-lastMin;
var lastMax;
var maxRange=12*30*24*3600*1000;//12个月
$(“#容器”).highcharts('StockChart'{
滚动条:{
利维德劳:错
},
xAxis:{
活动:{
余弦:函数(e){
var max=this.max,
min=this.min;
if(lastMin&&lastMax){
如果(最大-最小>最大范围){
如果(分钟<最后分钟){
最小=最大-最大范围;
}否则{
最大=最小+最大范围;
}
}
}
var x=这个;
setTimeout(函数(){
x、 设置极值(最小值,最大值);//图表x轴
}, 1);
lastMin=min;
lastMax=max;
}
}
},
范围选择器:{
选定:1
},
系列:[{
名称:“美元兑欧元”,
数据:美元/欧元
}]
});
});
我想阻止用户选择大于允许范围的范围,换句话说,当导航器太大时阻止它

我也在遵循这一点,我尝试了所有建议的解决方案,但我有错误(“未捕获引用错误:未定义Highcharts”)

谢谢Sebastian

我设法找到了一个包装“render”函数的解决方案()。这样做,我成功地在导航栏上设置了“最小缩放”

    $(function() {

    var lastX0;
    var lastX1;
    var maxRange = 100; //100 pixels

    (function (H) {       
        H.wrap(H.Scroller.prototype, 'render', function (proceed) {    
            console.log(arguments)
            if(arguments[4] - arguments[3] > maxRange + 2) {
                if (arguments[3] < lastX0) {
                    arguments[3] = lastX0;
                } else {
                    arguments[4] = lastX1;
                }
            }
            proceed.apply(this, [].slice.call(arguments, 1));

            lastX0 = arguments[3];
            lastX1 = arguments[4];
        });
    }(Highcharts));  

    $('#container').highcharts('StockChart', {
        scrollbar: {
            liveRedraw: true
        },
        series: [{
            name: 'USD to EUR',
            data: usdeur
        }]
    });


    var highchart = $('#container').highcharts();
    var extremes = highchart.xAxis[0].getExtremes();
    var rangeTotal = extremes.max - extremes.min;

    var f = maxRange / $('#container').width();
    highchart.xAxis[0].setExtremes(extremes.max - (f * rangeTotal), extremes.max);
});
$(函数(){
var lastX0;
var lastX1;
var maxRange=100;//100像素
(职能(H){
H.wrap(H.Scroller.prototype,'render',函数(继续){
console.log(参数)
if(参数[4]-参数[3]>maxRange+2){
if(参数[3]
在示例代码中,我使用了固定数量的像素,但在我的实际应用程序中,我使其成为动态的。我之所以这样做,是因为我不能在我正在使用的软件中使用数据分组属性,而且由于图表中条形图的最小大小是1像素(显然),所以highcharts隐藏了一些条形图(或点)


我正在设置最小缩放,以便显示范围内的所有条都可见,因为用户无法在x轴上显示更高范围的“隐藏”条问题(这是一个很棒的功能,但我无法使用它)不会发生

这是最简单的方法,但在您的场景中,您需要highstock scroller.mouseMoveHandler函数。谢谢!包装的功能,我设法做到了我想要的一切=)。听起来很棒,所以我想一切都正常工作。
    $(function() {

    var lastX0;
    var lastX1;
    var maxRange = 100; //100 pixels

    (function (H) {       
        H.wrap(H.Scroller.prototype, 'render', function (proceed) {    
            console.log(arguments)
            if(arguments[4] - arguments[3] > maxRange + 2) {
                if (arguments[3] < lastX0) {
                    arguments[3] = lastX0;
                } else {
                    arguments[4] = lastX1;
                }
            }
            proceed.apply(this, [].slice.call(arguments, 1));

            lastX0 = arguments[3];
            lastX1 = arguments[4];
        });
    }(Highcharts));  

    $('#container').highcharts('StockChart', {
        scrollbar: {
            liveRedraw: true
        },
        series: [{
            name: 'USD to EUR',
            data: usdeur
        }]
    });


    var highchart = $('#container').highcharts();
    var extremes = highchart.xAxis[0].getExtremes();
    var rangeTotal = extremes.max - extremes.min;

    var f = maxRange / $('#container').width();
    highchart.xAxis[0].setExtremes(extremes.max - (f * rangeTotal), extremes.max);
});