Highcharts удаляет метки с нулевым значением
Я использую highcharts на своем сайте, но доказываю сложность с точки зрения презентации.
Мои данные загружаются отлично, но для ряда некоторые значения являются нулями. Я бы хотел отобразить метку, если она не равна нулю, поскольку в противном случае ее становится трудно читать.
Я пытаюсь сделать что-то вроде этого:
plotOptions: {
column: {
stacking: 'normal',
dataLabels: {
enabled: this.value == 0 ? false : true,
color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white' }
}
}
Но это не работает. Я пытался использовать только 'this' вместо значения, но также не подбираю его.
Мне не удалось найти вариант по умолчанию из библиотеки, который позволил бы мне сделать это, не создавая собственный код.
Я проверил несколько подходов, но нули находятся в одной из серий. Поэтому я все же хочу представить метку для значений, которые не являются нулями для группы.
Я думаю, когда кто-то говорит это. Он принимает значение всей группы, а не отдельную серию...
Любые предложения? Ясно, что я делаю что-то неправильно!
Ответы
Ответ 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 + '%';
}
}
}