2012-07-18 13 views
7

Sto utilizzando jqPlot con jqplot.PieRenderer per provare a visualizzare un grafico a torta. Sull'etichetta mi piacerebbe mostrare value (percent). La documentazione dice che è possibile passare dataLabel una serie di tipi di etichetta (source), tuttavia, mettendo %d%% (per percentuale) e %d (per valore) nell'opzione dataLabelFormatString non viene visualizzato nulla.jqPlot mostra percentuale e valore sul grafico a torta

Qualche idea qui?

{ 
    seriesDefaults: { 
     renderer: jQuery.jqplot.PieRenderer, 
     rendererOptions: { 
      showDataLabels: true, 
      dataLabels: ['value', 'percent'], 
      dataLabelFormatString: "%d %d%%", 
      sliceMargin: 4, 
      fill: false 
     } 
    }, 
    legend: { show:true, location: 'e' } 
} 

risposta

18

Ho letto quei documenti un po 'diversamente. Sono le opzioni 'valore', 'percentuale', 'etichetta' O una matrice di etichette. Non una serie di opzioni. Per fare ciò che vuoi, devi creare i tuoi datalabels come una vera serie di etichette.

Ad esempio:

data = [ 
    ['Heavy Industry', 12],['Retail', 9], ['Light Industry', 14], 
    ['Out of home', 16],['Commuting', 7], ['Orientation', 9] 
]; 

var total = 0; 
$(data).map(function(){total += this[1];}) 

myLabels = $.makeArray($(data).map(function(){return this[1] + " " + Math.round(this[1]/total * 100) + "%";})); 

Vedi esempio violino here.

+0

La ringrazio molto! Vorrei poterti dare più di un rappresentante per questo. – Snuffleupagus

+0

Prego. – Mark

+0

Eccellente - Mi sono anche un po 'confuso con i documenti e ho provato a implementare una serie di opzioni - l'hai risolto - Grazie di cuore. – YonoRan

0

uso

formatter: function(label, series){ 
         return '<div style="font-size:14pt;text-align:center;padding:2px;color:white;">'+Math.round(series.percent)+"%<br/>" + series.data[0][1] +'</div>'; 
        }, 
Problemi correlati