2012-05-26 24 views
12

Sto implementando i diagrammi elevati nel mio sito, tuttavia si sta rivelando una sfida dal punto di vista della presentazione.Highcharts rimuove le etichette con valore zero

I miei dati vengono caricati correttamente, ma per le serie alcuni valori sono zero. Vorrei mostrare l'etichetta quando non è zero, altrimenti diventa difficile da leggere.

sto cercando di fare qualcosa di simile:

plotOptions: { 
    column: { 
    stacking: 'normal', 
    dataLabels: { 
      enabled: this.value == 0 ? false : true, 
     color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white' } 
} 
} 

Ma questo non sta funzionando. Ho provato a utilizzare solo "questo" anziché il valore, ma non lo raccolgo. Non sono stato in grado di trovare un'opzione predefinita dalla libreria che mi consenta di farlo senza dover creare codice personalizzato.

Ho controllato alcuni approcci, ma gli zeri sono in una delle serie. Quindi voglio ancora presentare l'etichetta per i valori che non sono zeri per il gruppo.

Credo che quando uno dice this.y prende il valore di tutto il gruppo, e non singole serie ...

Qualche suggerimento? Chiaramente sto facendo qualcosa di sbagliato!

risposta

52

Hai provato a utilizzare l'opzione formatter per dataLabels? Dovresti essere in grado di accedere ai tuoi dati all'interno di questo e decidere come dovrebbe essere l'etichetta. Qui puoi controllare zero e restituire semplicemente null di seguito.

dataLabels: { 
    enabled: true, 
    color: colors[0], 
    style: { 
     fontWeight: 'bold' 
    }, 
    formatter: function() { 
     if (this.y != 0) { 
      return this.y +'%'; 
     } else { 
      return null; 
     } 
    } 
} 

Inoltre, se si hanno problemi a capire quale parte dei dati da guardare, utilizzare console.log(this) nella funzione di formattazione in modo da poter vedere l'oggetto che si sta lavorando.

Partenza questo esempio jsfiddle di lavoro: http://jsfiddle.net/VLmKK/69/

Speranza che aiuta!

Aggiornamento: restituire null anziché stringa vuota per evitare la creazione di un'etichetta invisibile come menzionato nei commenti di Brett. Grazie.

Si può anche not return anything su valori zero.

+0

grazie gizmotivation, ho modificato la domanda per chiarire. – Lievcin

+0

@Lievcin: l'opzione formattatore gestisce ogni valore individualmente come desiderato. L'ho provato nei file di esempio highchart. Ha rimosso solo le etichette dai punti dati che erano 0. Sei riuscito a provarlo? – christurnerio

+0

Hai appena aggiunto un esempio di jsfiddle per te. http://jsfiddle.net/gizmovation/VLmKK/ – christurnerio

Problemi correlati