2013-07-03 4 views
3

Пожалуйста, проверьте это: http://jsfiddle.net/HA5xE/Highcharts столбчатой ​​диаграммы метки скрыть данные, чтобы не перекрывать

Итак, я столбчатую диаграмму, и я хочу, чтобы скрыть метки данных, когда они не помещаются в области. для примера в категории 8, чтобы не иметь метки данных «4» вообще.

Я видел: http://api.highcharts.com/highcharts#plotOptions.bar.dataLabels.crop и, как я понимаю, это должно быть сделано автоматически, но по какой-то причине не работает.

Я попытался вычислить серию ширины (или высоты) в пикселях, чтобы контролировать отображение/скрытие по функции форматирования, но мне не удалось получить ширину полосы штриха.

formatter: function() { 
if(this.percentage.toFixed(0)>0) 
    return this.percentage.toFixed(0); 
else 
    return ''; 
} 

Благодарим за помощь.

ИСПРАВЛЕНО:

formatter: function() { 
if(this.point.yBottom - this.point.plotY>13) 
    return this.percentage.toFixed(0); 
else 
    return ''; 
} 
+0

кадрирование не то, что вы думаете ... – c0deNinja

ответ

8

Вы можете перебирать в каждой точке в каждой серии, а затем проверить ширину панели и уничтожить этикетку, если widht меньше ie.15px.

http://jsfiddle.net/HA5xE/1/

$.each(chart.series,function(i,serie){ 
     $.each(serie.data,function(j,data){ 
      if(data.yBottom - data.plotY < 15) 
       data.dataLabel.destroy(); 
     }); 
    }); 
+0

Спасибо Себастьян! Ваше решение отлично работает – Irakli

+0

Отличное решение Sebastian; Однако я столкнулся с небольшой проблемой со столбчатыми столбцами. При привязке к событию «redraw»; после переключения видимости ряда я получал ошибку: «Не могу прочитать свойство» namespaceURI «неопределенного». Небольшое обходное решение, которое я обнаружил, это 'hide()' вместо 'destroy()'. – Richard

+0

У вас есть демо-версия? –

Смежные вопросы