2013-03-12 78 views

回答

3

該選項目前不存在於HighCharts中,但我可以找到,但是,您可能可以對源代碼進行一些黑客操作以使其正常工作。

我使用版本v2.3.3這個黑客,但是,其他版本可能類似的工作。

有問題的代碼是圍繞線9336:

allItems = []; 
    each(chart.series, function (serie) { 
     var seriesOptions = serie.options; 

     if (!seriesOptions.showInLegend) { 
      return; 
     } 

     // use points or series for the legend item depending on legendType 
     allItems = allItems.concat(
       serie.legendItems || 
       (seriesOptions.legendType === 'point' ? 
         serie.data : 
         serie) 
     ); 
    }); 

緊接該代碼後,放置以下代碼:

for (var i=0;i<allItems.length;i++){ 
     if (typeof allItems[i].showInLegend !== "undefined"){ 
      if (!allItems[i].showInLegend){ 
       allItems.splice(i,1) 
       i--; 
      } 
     } 
    } 

然後,對於設置showInLegend =假像這樣的點:

{ 
    name: 'Chrome', 
    y: 12.8, 
    sliced: true, 
    selected: true, 
    showInLegend: false 
}, 

這是一個顯示工作概念的JSFiddle:http://jsfiddle.net/mkremer90/zXSJW/

+0

不錯的答案。也許是一個好主意,提到你修改了哪個版本的highcharts。 – SteveP 2013-03-12 14:06:57

+0

謝謝史蒂夫。可能會從我的電腦上長達一個小時,我正在擦拭硬盤。然後生病檢查。 – MatthewKremer 2013-03-12 14:13:51

0

您可以在這個例子中使用 「假」 系列,如:

http://jsfiddle.net/Qaaqw/

,介紹如何在圖例中顯示定義的項目。

legendItemClick: function (event) { 
         console.log(this); 
         var thisSeriesId = this.id; 
         var thisSeriesVisibility = this.visible ? true : false; 

         $(chart.series).each(function (i, e) { 

          $(e.data).each(function(j, k){ 

           if (thisSeriesId === k.id) { 
            thisSeriesVisibility ? k.setVisible(false) : k.setVisible(true); 
           } 
          }); 
         }); 
         event.preventDefault(); 

        } 
+0

工作,謝謝! – 2013-03-13 16:43:02