在高图上设置左右边框

Set left and right border-like on highchart

有什么方法可以在 x 轴的起点和终点设置网格线,或者以某种方式在高图上设置 左右边​​框 而无需显示整个网格线。 进一步了解请参考附图

参考:http://jsfiddle.net/f0j6tjxy/

$(function() {
  $('#container').highcharts({
    chart: {
      type: 'spline',
      inverted: false
    },
    xAxis: {
      reversed: false,
      gridLineWidth: 1,
      labels: {
        formatter: function() {
          return this.value + 'km';
        }
      },
    },
    yAxis: {
      title: {
        text: 'Temperature'
      },
      gridLineWidth: 0,
      labels: {
        formatter: function() {
          return this.value + '°';
        }
      },
    },
    legend: {
      enabled: false
    },
    series: [{
      name: 'Temperature',
      data: [
        [0, 15],
        [10, -50],
        [20, -56.5],
        [30, -46.5],
        [40, -22.1],
        [50, -2.5],
        [60, -27.7],
        [70, -55.7],
        [80, -76.5]
      ]
    }]
  });
});

您可以使用 minorTicks 来实现这一点。通过以下方式:

xAxis: {
  gridLineWidth: 0,
  minorTicks: true,
  minorGridLineWidth:1,
  minorTickInterval: 80,
  ...
}

如果您有动态 min/max,则可以动态设置它,例如在加载事件中。

工作示例: http://jsfiddle.net/ewolden/f0j6tjxy/3/


编辑:

对于动态 min/max 你可以包括这个:

chart: {
  events: {
    load: function() {
      minValue = this.xAxis[0].getExtremes().dataMin;
      maxValue = this.xAxis[0].getExtremes().dataMax;
      gridlineDistance = maxValue - minValue;
      this.update({
        xAxis: {
          minorGridLineWidth: 1,
          minorTicks: true,
          minorTickInterval: gridlineDistance,
        }
      }, true)
    }
  }
},

只要在图表的开始和结束处有一个 majorTick,这将分配 minorTick 在那里绘制一个网格。

工作示例: http://jsfiddle.net/ewolden/f0j6tjxy/12/

然而,对于实时更新的数据,这就更难了。一种方法是在末尾添加 plotLines,如下所示:

chart: {
  events: {
    load: function() {
      // set up the updating of the chart each second
      var series = this.series[0];
      var xAxis = this.xAxis[0];
      setInterval(function() {
        var x = (new Date()).getTime(), // current time
        y = Math.round(Math.random() * 100);
        series.addPoint([x, y], true, true);
        xAxis.update({
          plotLines: [{
            value: x - 60000,
            color: '#f2f2f2',
            width: 1
          }, {
            value: x,
            color: '#f2f2f2',
            width: 1
          }]
        });
      }, 1000);
    }
  }
},

工作示例: http://jsfiddle.net/ewolden/1L9aak94/29/

这被硬编码为 60k 毫秒,但可以很容易地通过使用 getExtremes() 方法使其动态化。