Подтвердить что ты не робот

Highcharts удаляет метки с нулевым значением

Я использую highcharts на своем сайте, но доказываю сложность с точки зрения презентации.

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

Я пытаюсь сделать что-то вроде этого:

plotOptions: {
   column: {
    stacking: 'normal',
    dataLabels: {
           enabled: this.value == 0 ? false : true,
       color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white' }
}
}

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

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

Я думаю, когда кто-то говорит это. Он принимает значение всей группы, а не отдельную серию...

Любые предложения? Ясно, что я делаю что-то неправильно!

4b9b3361

Ответ 1

Пробовали ли вы использовать параметр formatter для dataLabels? Вы должны иметь доступ к своим данным внутри и решить, как должен выглядеть ярлык. Здесь вы можете проверить нуль и просто вернуть null, показанный ниже.

dataLabels: {
    enabled: true,
    color: colors[0],
    style: {
        fontWeight: 'bold'
    },
    formatter: function() {
        if (this.y != 0) {
          return this.y +'%';
        } else {
          return null;
        }
    }
}

Кроме того, если у вас возникли проблемы с выяснением, какую часть ваших данных посмотреть, используйте console.log(this) в функции форматирования, чтобы вы могли видеть объект, с которым работаете.

Посмотрите этот рабочий пример jsfiddle: http://jsfiddle.net/VLmKK/69/

Надеюсь, что это поможет!

Update: возвращает null вместо пустой строки, чтобы избежать создания невидимой метки, указанной в комментариях Бретта. Спасибо.

Вы также можете не возвращать ничего по нулевым значениям.

Ответ 2

dataLabels: {
 enabled: true,
    formatter: function(){
      if(this.y !== 0){
         return this.point.name + ' ' + this.y + '%';
      }
    }
}