Highcharts yAxis.max динамически управляет тиковыми интервалами - PullRequest
0 голосов
/ 30 марта 2020

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

Например: min: 3 и max 10. Тогда старшая диаграмма не будет устанавливать эти значения вместо того, чтобы устанавливать значение в диапазоне от 0 до 14. Это просто пример значения, иногда я получаю 36000,14 как минимум и 454533,18 как максимум.

Так что мой лог c в этом случае не работает.
Это часть кода, которая у меня сейчас есть:

data = [3.43, 3.58, 4.86, 8.55, 8.77, 4.44, 9.67]
maximum_val = Math.ceil(maximum_val) eg: 10
minimum_val = Math.floor(minimum_val) eg: 3
evolution_options.yAxis[$('#div_count_'+div).find('#y_axis_lbl').text()] = {
  min: minimum_val,
  max: maximum_val,
  title: false,
  labels: {
    style: {
      color: 'black'
    }
  }
}

Обновление

Fiddle: http://jsfiddle.net/e3fy1vu9/

Дальнейший мозговой штурм

Я думаю, это потому, что минимальное значение не является t кратное максимальному значению, поэтому Highchart не может рассчитать, как разделить тик. Если бы был какой-либо способ, я мог бы установить максимальное значение кратным минимальному значению.

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Вот мой совет, как рассчитать макс и мин для оси по определенным данным.

Демо: https://jsfiddle.net/BlackLabel/0qwt1kx7/

  yAxis: {
    min: Math.floor(Math.min(...data)),
    max: Math.round(Math.max(...data)),
    tickAmount: Math.round(Math.max(...data)) - Math.floor(Math.min(...data)) + 1 //1 count the min or max as itself
  },

Пожалуйста, проверьте его и дайте мне знать, если оно соответствует вашим требованиям. Поскольку значение tickAmount зависит от того, сколько значений включено в массив данных, и, вероятно, для больших данных необходимо внести некоторые изменения.

РЕДАКТИРОВАТЬ:

Попробуйте использовать этот пользовательский решение для расчета позиций по оси Y:

Демо: http://jsfiddle.net/BlackLabel/ztaj6Lkd/

var positions = [],
    tickNumbers = 5,
    tick = Math.floor(Math.min(...data));

for(let i = 0; i < tickNumbers; i++) {
    positions.push((Math.round(tick * 100) / 100));
  tick += Math.round(Math.max(...data)) / tickNumbers
}
//add the max 
positions.push(Math.round(Math.max(...data)))
0 голосов
/ 30 марта 2020

Привет, я исправил это, установив эту опцию alignTicks:false.

evolution_options.yAxis[$('#div_count_'+div).find('#y_axis_lbl').text()] = {
  min: minimum_val,
  max: maximum_val,
  title: false,
  labels: {
    style: {
      color: 'black'
    }
  },
  alignTicks: false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...