2014-07-08 13 views
7

Ho un grafico a torta nvd3. Sto ottenendo il valore percentuale come etichette ma lo voglio nel tooltip. Ecco il codice HTML:Come ottenere la percentuale nei tooltip di un grafico a torta nvd3?

<nvd3-pie-chart data="Data1"id="labelTypePercentExample" 
     width="550" 
     height="350" 
     x="xFunction()" 
     y="yFunction()" 
     showLabels="true" 
     pieLabelsOutside="false" 
     tooltips="true" 
     tooltipcontent="toolTipContentFunction()" 
     labelType="percent" 
     showLegend="true"> 
    </nvd3-pie-chart> 

DATI

Data1=[{ key: "Ongoing", y: 20 }, 
     { key: "completed", y: 0 }]; 

Qui è la funzione di suggerimento per la mostra del tasto come tooltip-dati.

$scope.toolTipContentFunction = function(){ 
    return function(key, x, y, e, graph) { 
     return '<h1>' + key + '</h1>' 
    } 
} 

risposta

6

Ecco uno jsfiddle che mostra la percentuale in suggerimenti.

Il codice chiave è questo: (si deve calcolare totale di tutti i valori che compongono grafico a torta)

var data = [ 
    {"label": "Water",  "value": 63}, 
    {"label": "Milk",   "value": 17}, 
    {"label": "Lemonade",  "value": 27}, 
    {"label": "Orange Juice", "value": 32} 
]; 

var total = 0; 
data.forEach(function (d) { 
    total = total + d.value; 
}); 
var tp = function(key, y, e, graph) { 
    return '<p>' + (y * 100/total).toFixed(3) + '%</p>'; 
}; 

Inoltre, si aggiunge questa linea quando si crea grafico NVD3, come già sapete:

.tooltipContent(tp); 

Il risultato finale:

enter image description here

2

S risposta @VividD leggermente modificata.

È possibile (nvd3 v 1.8.1) per modificare solo il valore di descrizione comandi (non tutto il testo):

var total = 0; 
data.forEach(function (d) { 
    total = total + d.value; 
}); 

chart.tooltip.valueFormatter(function(d){ 
    return (d * 100/total).toFixed() + ' %'; 
}); 

Esempio: http://jsfiddle.net/mq56p4zk/4/

+0

Potresti per favore elaborare più la tua risposta aggiungendo un po 'più di descrizione della soluzione che fornisci? – abarisone

-1

simili workgena, questo fatto per me.

chart.tooltip.valueFormatter(function(d){ 
    return (d +' %'); 
}); 
+0

Questo aggiunge solo un segno di percentuale dietro il valore, non sembra l'OP desiderato. –