2016-12-15 58 views
1

我有一个HighStock负责与滚动条非常相似,这一个Highcharts/Highstock滚动默认位置

http://jsfiddle.net/gh/get/jquery/3.1.1/highslide-software/highcharts.com/tree/master/samples/stock/demo/navigator-disabled/

Highcharts.stockChart('container', { 


     rangeSelector: { 
      selected: 1 
     }, 

     title: { 
      text: 'AAPL Stock Price' 
     }, 

     navigator: { 
      enabled: false 
     }, 

     series: [{ 
      name: 'AAPL Stock Price', 
      data: data, 
      tooltip: { 
       valueDecimals: 2 
      } 
     }] 
    }); 

我希望默认滚动位置的地方在图表中,虽然,有没有办法做到这一点?

回答

1

您可以在​​电话与xAxis.setExtremes做到这一点。一个简单的例子(使用任意1年范围):

chart: { 
    events: { 
     load: function() { 
     this.xAxis[0].setExtremes(
      Date.UTC(2013, 0, 1), 
      Date.UTC(2013, 11, 31) 
     ); 
     } 
    } 
    }, 

例子jsFiddle

如果你需要确定你的“中间”是什么,它可以取决于你的数据源,你可以预先计算它,或者你也可以在chart.events.load的调用。

为了好玩,我加入了中点计算。这将使用moment.js,因为它比滚动自己时间的方法非常容易。

minX = data[0][0]; 
maxX = data[data.length - 1][0]; 
midX = minX + ((maxX - minX)/2); 

var midDate = new Date(midX); 
var startDate = moment(midDate); 
var endDateMoment = moment(midDate); 
startDate.subtract(1.5, 'months'); 
endDateMoment.add(1.5, 'months'); 

请注意,我加入/减去1.5个月,以使您的3个月范围选择器有效。该moment.js库舍的长达2个月。不过你明白了。所以,你的setExtremes变为:

this.xAxis[0].setExtremes(
     startDate.valueOf(), //.valueOf() in this context converts to javascript time 
     endDateMoment.valueOf() 
    ); 

这里是现场jsFiddle