2016-12-15 81 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