Как установить статическое минимальное значение для осей в Highcharts - PullRequest
8 голосов
/ 19 ноября 2011

У меня есть данные на основе времени, которые варьируются от 1 до 500. Время отображается на оси x, а значения на оси y.

Когда диапазон между минимальной и максимальной точками данных велик, начальная метка оси Y равна 0. Я могу сказать Highcharts не отображать метку, установив yAxis.startOnTick = false;, но это не совсем то, что я ищу .

Вот jsfiddle проблемы, где вы не можете сказать, является ли первая точка 0 или какое-то другое значение. Наличие 0 здесь также выглядит как минимальный диапазон для у 0, а не 1.

Может ли Highcharts отображать первую метку, а первая метка всегда должна быть установлена ​​на минимальное значение в наборе данных (относительно его оси).

Ответы [ 2 ]

10 голосов
/ 19 ноября 2011

Я поражен, насколько это сложно.Не оптимальное решение, но лучшее Я могу придумать с API HighChart:

var someData = [1,5,82,9,300,5,42,199,5,6,99,1,56,52,250,64];

var chart = new Highcharts.Chart({

    chart: {
        renderTo: 'container'
    },
    yAxis:{
        min: -10,
        tickInterval: 1,
        labels: {
            formatter: function() {
                if (this.value < someData[0])
                    return null;
                else if (this.value == someData[0])
                    return this.value;
                else if (this.value % 50 == 0)
                    return this.value;
            }
        }
    },
    series: [{
        data: someData
    }]

});

enter image description here

3 голосов
/ 31 июля 2014

Решение (которое оптимизирует Marks answer ) заключается в использовании yAxis.labels.formatter с this.isFirst и this.axis.dataMin, например:

yAxis:{
    labels: {
        formatter: function() {
            if(this.isFirst)
                return this.axis.dataMin;
            return this.value;
        }
    }
}

См. this JSFiddledemo для примера.

Преимущество этого состоит в том, что вам не нужно вручную устанавливать tickInterval, что экономит много вызовов на formatter и позволяет Highcharts самостоятельно определять интервалы меток,Кроме того, он использует знание оси минимального значения данных, вместо того, чтобы проверять массив (который может потребоваться выполнить итерацию для нахождения минимума).

Остерегайтесь того, что yAxis.min должно быть установленок чему-то разумному здесь (лучше всего работает с 0 и положительными данными).Если ось Y идет намного ниже минимальной точки данных, первая метка не будет иметь метку в 0.

Значение this.axis было недоступно, когда был задан этот вопрос.

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