I have an nvd3 pie chart. I am obtaining the percentage value as labels but I want it in the tooltip. Here is the HTML:
<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>
DATA
Data1=[{ key: "Ongoing", y: 20 },
{ key: "completed", y: 0 }];
Here is the tooltip function for showing key as tooltip-data.
$scope.toolTipContentFunction = function(){
return function(key, x, y, e, graph) {
return '<h1>' + key + '</h1>'
}
}
Here is a jsfiddle that demonstrates percentage in tooltips.
The key code is this: (you have to calculate total of all values that comprise pie chart)
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>';
};
Also, you add this line when you create NVD3 chart, as you already know:
.tooltipContent(tp);
The end result:
Slightly modified @VividD answer.
It is possible(nvd3 v 1.8.1) to modify only the value in tooltip (not all the text):
var total = 0;
data.forEach(function (d) {
total = total + d.value;
});
chart.tooltip.valueFormatter(function(d){
return (d * 100/total).toFixed() + ' %';
});
Example: http://jsfiddle.net/mq56p4zk/4/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With