Границы оси Y Highcharts игнорируют пол / потолок - PullRequest
0 голосов
/ 05 мая 2020

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

Однако, как только у меня появятся данные с широким диапазоном (скажем, от -20 до 1000), значения пола и потолка go выскочат прямо из окна, и диаграмма сдувает отрицательную границу оси y до огромного числа, что устраняет большую часть разрешения для моих данных. Я пробовал каждую комбинацию min / max / minRange / minPadding / softThreshold / floor / потолок / et c, которые я могу придумать, и я не могу на всю жизнь получить минимальную границу для оси y, чтобы придерживаться при -50, когда есть отрицательные значения.

JSFiddle здесь: https://jsfiddle.net/hx6gnw3j/2/

Highcharts.chart('container', {
    yAxis: {
      floor: -50,
      ceiling: 1000,
      opposite: true,
    },
    series: [{ 
        //data: [-8.9, 10.5, 15.4, 12.2, 14.0, 17.0, 13.6, 7.5, 2.4, 9.1, 9.6, 5.4],
        //data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 999.6, 54.4],
        data: [-15.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 800.6, 54.4],
    }]
});

С первыми двумя закомментированными наборами данных все работает нормально. Когда есть отрицательное значение, но узкий диапазон, ось Y показывает все данные с узким диапазоном. Когда нет отрицательных данных, минимальная граница для оси Y равна 0, а максимальная - 1000. Но как только появляется отрицательное значение и большое положительное значение (третий набор данных), я получаю границы оси Y равные -500. и 1000. Это определенно не то, что я хочу.

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Проблема, с которой вы боретесь, связана с сохранением рассчитанной константы tickInterval для этого типа данных.

Посмотрите, как график с этими конкретными данными выглядит с принудительным min как -50: https://jsfiddle.net/BlackLabel/26fujcL7/. Использование функции yAxis.tickPositions нарушает лог c, отвечающий за установку интервалов тика.

yAxis: {
  tickPositions: [-50, 0, 250, 500, 750, 1000]
},

API: https://api.highcharts.com/highcharts/yAxis.tickPositions

Я не уверен, что это это результат, который вас удовлетворит. В качестве альтернативы вы можете использовать обратный вызов tickPositioner, чтобы вычислить tickPositions для ваших нужд или увеличить tickAmount.

API: https://api.highcharts.com/highcharts/yAxis.tickPositioner

API: https://api.highcharts.com/highcharts/yAxis.tickAmount

0 голосов
/ 06 мая 2020

Простым решением было бы добавить tickInterval: 100 к вашей оси y.

...