Как установить статическое минимальное значение для осей в Highcharts

У меня времени в интервале от 1 до 500. Время отображается на оси x, а значения-на оси Y.

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

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

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

2 ответов


Я поражен, насколько это сложно. Не оптимальное решение, но лучшее Я могу придумать С 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


решение (которое оптимизирует знаки ответа), чтобы использовать yAxis.labels.formatter С this.isFirst и this.axis.dataMin, например:

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

посмотреть это демо JSFiddle для примера.

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

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

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