Увеличение xy пропорционально на диаграмме рассеяния Highcharts - PullRequest
0 голосов
/ 06 апреля 2020

Имея диаграмму рассеяния:

https://jsfiddle.net/hdq4rc35/

Я хочу иметь возможность масштабирования только пропорционально xy, , поэтому расстояние между отметками y равно То же самое, что и отметки x в любое время , в результате чего вместо свободного прямоугольника появляется квадратное поле масштабирования.

Я пробовал chart.setExtremes(), но это не влияло на масштабирование функционально.

1 Ответ

1 голос
/ 06 апреля 2020

Эта функциональность не поддерживается в Highcarts по умолчанию, но вы можете добавить ее, обернув drag метод из прототипа Pointer, например:

(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));

Live demo: https://jsfiddle.net/BlackLabel/aubkLt5o/

Справочник по API: https://www.highcharts.com/docs/extending-highcharts/extending-highcharts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...