在范围选择器更改上更改刻度间隔

Highstock Change tick interval on range selector change

本文关键字:范围 选择器      更新时间:2023-09-26

我无法获得tickinterval更新在以下jsp: https://jsfiddle.net/rarwarrar/5xgoqjst/4/

目前:

   xAxis: {
    events: {
    setExtremes: function(e) {
      if (e.rangeSelectorButton.text === "2Hour") {
         $('#chart').highcharts().xAxis[0].tickInterval= 2700000 //45 min
         $('#chart').highcharts().redraw()
       }
    }
    }
   },

不工作

例如,滴答间隔可以设置为每45分钟一次点击'2hour' ?

您可以使用tickPositioner函数在设置极值后更改tick位置。您可以使用axis .update()来更新这个轴的tickPositions:

   setExtremes: function(e) {
     if (e.rangeSelectorButton.text === "2Hour") {
       this.update({
         tickPositioner: function() {
           var positions = [],
             info = this.tickPositions.info;
           for (var x = this.dataMin; x <= this.dataMax; x += 45 * 60 * 1000) {
             positions.push(x);
           };
           positions.info = info;
           return positions;
         }
       }, false)
     }
   }

在这里你可以看到一个例子,它是如何工作的:https://jsfiddle.net/5xgoqjst/5/

你应该能够改变你的tickPositions在不同的范围。

问好。

可以,但如果文本显示为"2小时"而实际时间为45分钟,则会令人困惑。为什么不添加一个新的按钮呢?为了显示这一点,需要有最小数量的点,但你可以用allButtonsEnabled覆盖。以下是您的rangeSelector的样子:

   rangeSelector: {
         allButtonsEnabled: true,
     buttons: [{
       type: 'hour',
       count: 2,
       text: '2Hour'
     }, {
       type: 'hour',
       count: 5,
       text: 'Week'
     }, {
       type: 'day',
       count: 1,
       text: '2Weeks'
     }, {
       type: 'minute',
       count: 45,
       text: '45 minutes'
     }],
     selected: 1,
     inputEnabled: false,
     buttonPosition: {
       x: 340
     },
     buttonSpacing: 10
   }

这里是它的现场演示

也许这可以帮助某人,我更新了现有的提琴;-)

xAxis: {
  events: {
    setExtremes: function(e) {
      if (typeof(e.rangeSelectorButton) !== 'undefined') {
       // alert('count: ' + e.rangeSelectorButton.count + 'text: ' + e.rangeSelectorButton.text + ' type: ' + e.rangeSelectorButton.type);
        if (e.rangeSelectorButton.type === "week") {
          this.update({              
            tickInterval: 86400000, //1000*60*60*24 = 1 day
            minorTickInterval: 86400000
          }, false)
        }
      }
    }
  }
}