2014-01-10 6 views
4

Есть ли способ динамически устанавливать определенную ширину элементов легенды при изменении размера диаграммы? У меня есть некоторые очень длинные имена предметов, которые можно найти в легенде, поэтому мне нужно указать ширину, чтобы заставить текст обернуть, но я хотел бы изменить ширину, когда изменится ширина диаграммы. Благодарю.Highcharts - изменить размер легенды по размеру диаграммы?

ответ

2

я нашел лучшую работу вокруг для этого:

chart.legend.options.width = newwidth; 
chart.legend.itemStyle.width = newwidth; 
for(var index in this.chart.series) { 
     chart.legend.destroyItem(chart.series[index]); 
} 
chart.legend.render() 
0

Как правило, это невозможно, но вы можете отключить легенду высоких карт и подготовить свой собственный div (позиционированный абсолютно), который будет включать список всех серий и событие click. Простой пример доступен здесь

$legend = $('#customLegend'); 

    $.each(chart.series[0].data, function (j, data) { 

     $legend.append('<div class="item"><div class="symbol" style="background-color:'+data.color+'"></div><div class="serieName" id="">' + data.name + '</div></div>'); 

    }); 

    $('#customLegend .item').click(function(){ 
     var inx = $(this).index(), 
      point = chart.series[0].data[inx]; 

     if(point.visible) 
      point.setVisible(false); 
     else 
      point.setVisible(true); 
    });   

http://jsfiddle.net/N3KAC/10/

Чем только то, что вам нужно адаптировать это к вашей карте, ловя функцию $ (окно) .resize() и изменить размер элемента.

+0

Спасибо, но есть ли способ, чтобы добавить пользовательскую легенду экспортируемых изображений? Или может быть, способ уничтожить и перерисовать легенду высоких карт? – Julie

+0

На самом деле неважно. Я понял, что могу просто установить useHTML: true, а затем изменить ширину элементов легенды с помощью jquery. '$ ('. highcharts-legend-item span'). width (800)' Я не понимаю, почему это не произошло со мной в пятницу. Спасибо хоть! – Julie

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