Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Highcharts散点图中按比例缩放xy_Javascript_Highcharts_Zooming_Scatter Plot - Fatal编程技术网

Javascript 在Highcharts散点图中按比例缩放xy

Javascript 在Highcharts散点图中按比例缩放xy,javascript,highcharts,zooming,scatter-plot,Javascript,Highcharts,Zooming,Scatter Plot,有散点图的: 我希望能够仅按比例缩放xy,因此y记号之间的距离在任何时候都与x记号之间的距离相同,从而产生一个方形缩放字段,而不是一个自由矩形 我尝试了chart.setextrems(),但它没有影响缩放功能。默认情况下,Highcarts不支持该功能,但您可以通过从指针原型中包装拖动方法来添加它,例如: (function(H) { H.wrap(H.Pointer.prototype, 'drag', function(proceed, e) { var chartX = e

有散点图的:

我希望能够仅按比例缩放xy,因此y记号之间的距离在任何时候都与x记号之间的距离相同,从而产生一个方形缩放字段,而不是一个自由矩形


我尝试了
chart.setextrems()
,但它没有影响缩放功能。

默认情况下,Highcarts不支持该功能,但您可以通过从指针原型中包装
拖动
方法来添加它,例如:

(function(H) {
  H.wrap(H.Pointer.prototype, 'drag', function(proceed, e) {
    var chartX = e.chartX,
      chartY = e.chartY,
      mouseDownX = this.mouseDownX,
      mouseDownY = this.mouseDownY,
      rectX = Math.abs(chartX - mouseDownX),
      rectY = Math.abs(chartY - mouseDownY);

    if (rectX > rectY) {
      e.chartY = chartY + (
        mouseDownY > chartY ?
        -(rectX - rectY) :
        (rectX - rectY)
      );
    } else {
      e.chartX = chartX + (
        mouseDownX > chartX ?
        -(rectY - rectX) :
        (rectY - rectX)
      );
    }

    proceed.apply(this, Array.prototype.slice.call(arguments, 1));
  });
}(Highcharts));

现场演示:


API参考:

这是一些天才的javascript编码,谢谢,做得很好!