Highcharts - добавить% к метке первой оси?

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

Я знаю, что могу жестко закодировать число, например:

 yAxis: {
    labels: {
        formatter: function() {
            if ( this.value == 12 ) {
               return this.value + "%";
            } else {
               return this.value;
            }
        }
    },

Но это не очень гибкое решение.

Есть ли способ проверить первое (или n-е) отображаемое значение? Есть ли способ получить индекс значения в функции форматирования?

Обновление 2013 г.

Это работает в большинстве случаев:

if ( this.value == this.axis.getExtremes().max )
    return this.value + '%';
else 
    return this.value;

Однако это не работает, если для yAxis.endOnTick задано значение false, потому что в этом случае максимальное значение оси не совпадает с самой высокой меткой< /strong> на оси.

Есть ли способ получить эту самую высокую метку из функции форматирования?


person supertrue    schedule 02.03.2012    source источник


Ответы (4)


Насколько я знаю, невозможно найти «n-й» элемент на оси, но первый и последний можно найти, используя свойства this.isFirst и this.isLast' in stead of checkingthis.value`

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

person Rahul    schedule 03.03.2012
comment
Спасибо! Это привело меня на правильный путь. В итоге я использовал решение с this.axis.getExtremes().max, которое я могу опубликовать отдельно. - person supertrue; 04.03.2012
comment
См. обновление 2013 г. — это не работает, когда endOnTick равно false. Так что я все еще ищу волшебное решение. - person supertrue; 15.04.2013

С версией highchart 4.2.x я достиг этого с помощью следующего кода

labels: {
    formatter: function () {
        if(this.isFirst)
            return this.value + "%";
        else
            return this.value;
        }
    }
}
person Ajhar Shaikh    schedule 22.09.2016

Вы также можете добавить [%] к имени оси y. Тогда вам не придется возиться с клещами.

person dgw    schedule 03.03.2012

Вы можете рисовать при максимальном значении plotLine, а после изменения экстремумов - удалить и добавить новый). Затем метку для этой plotLine вы можете установить как «%» и перейти на левую сторону.

Другое решение — использовать заголовок оси — установить его наверх и убрать вращение.

Последнее решение (или, скорее, обходной путь) - использовать вторую yAxis и установить там min и max (или tickPositions) и показать только последнюю метку, а первую скрыть.

person Paweł Fus    schedule 16.04.2013
comment
Павел, сделает ли это возможным какое-либо из обновлений Highcharts за последние несколько лет? Напомним, что я пытаюсь получить доступ к первой метке на оси из функции форматирования, особенно когда ось не заканчивается на метке (т.е. endOnTick это false), поэтому я не могу просто сравнить значение метки с максимум оси. - person supertrue; 17.11.2015
comment
Теперь, когда я думаю об этом, как насчет использования флага this.isFirst? См. документы. - person Paweł Fus; 18.11.2015