2013-04-10 17 views
9

Ho due grafici a barre in pila, ma tutte le legende (di entrambe le barre) sono visualizzate insieme. Voglio raggruppare le legende in base agli elementi impilati nella barra. qualcuno può aiutarmi?Raggruppamento di legende negli Highcharts

$(function() { 
     $('#container').highcharts({ 

      chart: { 
       type: 'bar' 
      }, 

      title: { 
       text: 'Total fruit consumtion, grouped by gender' 
      }, 

      xAxis: { 
       categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas'] 
      }, 

      yAxis: { 
       allowDecimals: false, 
       min: 0, 
       title: { 
        text: 'Number of fruits' 
       } 
      }, 

      tooltip: { 
       formatter: function() { 
        return '<b>'+ this.x +'</b><br/>'+ 
         this.series.name +': '+ this.y +'<br/>'+ 
         'Total: '+ this.point.stackTotal; 
       } 
      }, 

      plotOptions: { 
       bar: { 
        stacking: 'normal' 
       } 
      }, 

      series: [{ 
       name: 'John', 
       data: [5, 3, 4, 7, 2], 
       stack: 'male' 
      }, { 
       name: 'Joe', 
       data: [3, 4, 4, 2, 5], 
       stack: 'male' 
      }, { 
       name: 'Jane', 
       data: [2, 5, 6, 2, 1], 
       stack: 'female' 
      }, { 
       name: 'Janet', 
       data: [3, 0, 4, 4, 3], 
       stack: 'female' 
      }] 
     }); 
    }); 

Ho un tipo simile di barra. e voglio raggruppare janet e jane insieme come gruppo e joe e john come un altro gruppo.

+0

quando dici hai 2 grafici, vuoi dire di avere più serie con 2 punti? 2 serie con più punti? 2 grafici completamente diversi? –

+0

Potresti mostrarci il codice che stai utilizzando finora? –

+0

Riferisci questo http://jsfiddle.net/cindrella_agi/6gw5P/ Ho un tipo simile di barra. e voglio raggruppare janet e jane insieme come gruppo e joe e john come un altro gruppo. –

risposta

22

Sulla base dell'esempio di riferimento si è collegato al, si può fare questo con la nuova serie di proprietà 'linkedTo' nella versione 3.

http://api.highcharts.com/highcharts#plotOptions.series.linkedTo

esempio aggiornamento: http://jsfiddle.net/jlbriggs/6gw5P/2/

linkedTo:':previous' 
+0

questo è bello. upvoted. Rende comunque i colori confusi. –

+0

Sì, non penso che ci sia un ottimo modo per gestire i colori. Possiamo renderlo migliore però ... http://jsfiddle.net/jlbriggs/6gw5P/4/ – jlbriggs

+0

sicuro finchè si chiude il paren :) http://jsfiddle.net/6gw5P/6/ –

0

Non è possibile raggruppare le legende in base allo stack, poiché in questo modo si perde la capacità di identificare i diversi componenti (ad es. Le singole serie non avranno un colore distinto o il colore della legenda non le corrisponderà) . Le leggende sono mappate alle persone perché quelle sono tutte fonti di dati distinte e poiché le aggiungi in questo modo le visualizza in questo modo.

Se non si cura dei diversi componenti con un colore distinto, non si desidera affatto un grafico a barre in pila. Puoi semplicemente avere un normale grafico a barre con 2 serie, maschio e femmina.

series: [{ 
       name: 'Male', 
       data: [10, 7, 8, 9, 7] 
      }, 
       name: 'Female', 
       data: [5, 5, 10, 6, 4] 
      } 
     } 
1

So che questo è un vecchio problema, ma l'impostazione showInLegend sulla serie funzionerà e sembra il modo più semplice.

showInLegend: false 

Esempio:

series: [{ 
name: 'John', 
data: [5, 3, 4, 7, 2], 
stack: 'male', 
showInLegend: false 
} 
+0

Questo era la soluzione che stavo cercando, tutto il resto era troppo complicato e, soprattutto, non funzionava. Tuttavia, ho incluso anche un 'showInLegend: true' per il punto dati che _did_ desidera includere nella legenda - e ha funzionato perfettamente. Grazie Jakob! – pshep123