如果值在边界之外,则散点图在边界上绘制

时间:2019-03-15 05:42:20

标签: highcharts scatter

我正在开发一个散点图(带有4个象限)。我希望序列中的每个点都位于象限内(如果值在x轴和y轴边界内)或在值超出轴范围的情况下仅在轴边界上绘制。

在每个系列中的第二个点都位于边界之外但不可见(如预期的那样)上附加了一个jsfiddle,但是我希望在我的情况下将这些点绘制在边界线100或-100上,并且仍然显示带有实际值的工具提示。

http://jsfiddle.net/raghuromp/xjzd9k02/2/

var series1Data = [ [71,33], [75, -105]];
var series2Data = [ [80,-59], [101, 56]];

有人可以帮助我实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

您可以这样使用load event来实现此目的:

chart: {
  events: {
    load: function() {
      for (var i = 0; i < this.series.length; i++) {
        var data = this.series[i].data
        for (var j = 0; j < data.length; j++) {
          data[j].actualXValue = data[j].x
          data[j].actualYValue = data[j].y
          if (data[j].x > 100) {
            data[j].x = 100
          }
          if (data[j].x < -100) {
            data[j].x = -100
          }
          if (data[j].y > 100) {
            data[j].y = 100
          }
          if (data[j].y < -100) {
            data[j].y = -100
          }
        }
        this.series[i].update({
          data: data
        })
      }
    }
  },
  ...
}

这会遍历所有存在的点,如果它们的值超过+ -100,则会更改其值,但会将实际值保留在单独的参数中。

然后,更改工具提示以反映实际值,可以这样完成:

tooltip: {
  formatter: function() {
      return '<b>' + this.series.name + '</b><br/>' +
        this.point.actualXValue + ': ' + this.point.actualYValue;
  }
},

工作中的JSFiddle: http://jsfiddle.net/ewolden/nsdk40ez/21/