Можно ли получить / вернуть значения Оси Highcharts? - PullRequest
1 голос
/ 17 апреля 2020

Я хотел бы иметь возможность использовать значения, напечатанные на осях Highcharts x и y, когда диаграмма отображается в другой части моего приложения, например, массив чисел от 0 до n.

I я использую highcharts-react-official - я не могу найти документацию по методам, которые возвращают значения, поскольку они печатаются точно на экране.

Возможно ли это?

Обновление

С помощью этого кода я могу вернуть массив чисел, представляющих значения тиков на оси y:

const options: Highcharts.Options = {
yAxis: {
  labels: {
    formatter(): string {
      console.log('YAXIS', Object.keys(this.axis.ticks)
      }
    }
  }
}

Хотя массив содержит отрицательное число, которое я не вижу на самой оси графика.

Тот же трюк не работает для оси X.

Есть ли более чистый подход для получения правильного результата?

Обновление 2

Следуя приведенному ниже решению I наконец то, что я искал: это не работает так, как вы ожидаете:

const res = this.yAxis
  .map((axis) => axis.ticks)
  .map((axisTicks) => Highcharts.objectEach(axisTicks, (tick) => tick.label.textStr));
console.log(res); // undefined;

Однако это работает:

const yAxisVals: string[][] = [];
const axisTicks = this.yAxis.map((axis) => axis.ticks);
axisTicks.forEach((item, idx) => {
  yAxisVals[idx] = [];
  Highcharts.objectEach(item, (tick) => yAxisVals[idx].push(tick.label.textStr));
});
console.log(yAxisVals);

1 Ответ

0 голосов
/ 19 апреля 2020

Вы можете использовать событие render и получить значения с помощью свойства Axis.tickPositions:

chart: {
  events: {
    render: function() {
      var xAxisTickPositions = this.xAxis[0].tickPositions,
        yAxisTickPositions = this.yAxis[0].tickPositions;

      console.log(xAxisTickPositions, yAxisTickPositions);
    }
  }
}

Демонстрация в реальном времени: http://jsfiddle.net/BlackLabel/6m4e8x0y/4960/

Справочник по API:

https://api.highcharts.com/highmaps/chart.events.render

https://api.highcharts.com/class-reference/Highcharts.Axis#tickPositions

...