2017-09-11 63 views
1

我想在圖中隱藏特定的圖例項目(http://api.highcharts.com/highcharts/legend)。如果我遍歷chart.legend.allItems並嘗試更改特定項目的可見屬性,它根本不會影響圖例。如何隱藏特定的圖例項目?

$.each(chart.legend.allItems, function() { 
    this.visible = false; 
}); 

如何在圖表上隱藏特定的圖例項目?

+4

你看:對於highcharts的最後一個版本 其他解決方案? http://api.highcharts.com/highcharts/plotOptions.series.showInLegend – jlbriggs

+1

@jlbriggs你爲什麼不發表這個評論作爲答案?這似乎正是OP所需要的。 –

回答

0

我發現了其他的解決方案中this question

var item = chart.series[1]; 
//hide serie in the graph 
item.hide(); 
item.options.showInLegend = false; 
item.legendItem = null; 
chart.legend.destroyItem(item); 
chart.legend.render(); 

編輯:在`showInLegend財產

$('#container').highcharts().series[1].update({ showInLegend: false }); 
0

你可以做到這一點的load event - Highcharts Doc

chart: { 
     events: { 
      load: function() { 
       var myChart = this; 

       $.each(myChart.series, function(index, serie) { 
        if(index === 2) { // hide serie 
         serie.hide(); 
        } 
       }); 
     } 
    } 
}, 

這裏一個fiddle

+0

嗨,thx爲及時回覆,我明白如何隱藏系列。我很難隱藏圖例(圖表旁邊的標籤)。 – Tawriq

+0

那麼,你想隱藏整個傳奇區域,還是隱藏傳奇中的某個位置? –

+0

嘿,我想只隱藏一個圖例項目(圖例容器/區域中的一個標籤),而不是整個圖例區域。 – Tawriq

0

,如果你想隱藏一些標籤,你可以添加一些CSS類根據的一些特殊功能隱藏起來系列。我通過其中一系列隱藏空數據的例子,也隱藏標籤:

for (var i = 0; i < chart.series.length; i++) { 
    if (chart.series[i].dataMax === 0) { 
     chart.series[i].hide(); 
    } 
} 
$("#charContent").find('.highcharts-legend-item-hidden').each(function() { 
    $(this).addClass('hidden'); 
}); 

在CSS:

.highcharts-legend-item-hidden.hidden { 
    display: none; 
} 

也許這不是一個非常乾淨的解決方案,但它爲我工作

+0

嗨,這個解決方案的唯一問題是標籤絕對放置在圖例容器中。隱藏位置絕對標籤在可見標籤之間留下空隙(隱藏標籤所在的位置)。你能想出任何通過操縱圖形對象來隱藏圖例的方法嗎? – Tawriq

+0

我發佈其他答案更好的解決方案操縱圖例對象 –