How to add Percentage and Total on the Legend of Google Pie Charts

google-visualization, javascript, pie-chart

Solution

You can do this creating a column for tooltip and use your first column as legend. Check this FIDDLE

var dataArray = [
    ['Frank.net Life Cover', 226],
    ['Frank.net Hospital Cash Back', 147],
    ['Frank.net Salary Protection', 228],
    ['King Price Car Insurance', 328],
    ['Momentum Medical Aid', 493],
    ['Oplan Health Cover', 185,],
    ['Youi Quote', 33],
];

var total = getTotal(dataArray);

// Adding tooltip column  
for (var i = 0; i < dataArray.length; i++) {
  dataArray[i].push(customTooltip(dataArray[i][0], dataArray[i][1], total));
}

// Changing legend  
for (var i = 0; i < dataArray.length; i++) {
  dataArray[i][0] = dataArray[i][0] + " " + 
      dataArray[i][1] + " requests, " + ((dataArray[i][1] / total) * 100).toFixed(1) + "%"; 
}

// Column names
dataArray.unshift(['Goal Name', 'No. of times Requested', 'Tooltip']);

var data = google.visualization.arrayToDataTable(dataArray);

Using `arrayToDataTable`, you need to set the role tooltip in "Tooltip" column:

data.setColumnProperty(2, 'role', 'tooltip');
data.setColumnProperty(2, 'html', true);

Note: If you are creating the `dataTable` dynamically just call `addColumn` with this signature:

data.addColumn({'type': 'string', 'role': 'tooltip', 'p': {'html': true}});

And in options add `tooltip: { isHtml: true }`:

var options = {
    title: 'Most Requested Sponsors',
    width: 900,
    height: 400,
    tooltip: { isHtml: true }
};

Problem

I have a page that displays data in a form of a Pie Chart. I use Google Charts to do this. Here's the code: ``` <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", {packages:["corechart"]}); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ ['Goal Name', 'No. of times Requested'], ['Frank.net Life Cover', 226], ['Frank.net Hospital Cash Back', 147], ['Frank.net Salary Protection', 228], ['King Price Car Insurance', 328], ['Momentum Medical Aid', 493], ['Oplan Health Cover', 185], ['Youi Quote', 33], ]); var options = { title: 'Most Requested Sponsors' }; var chart = new google.visualization.PieChart(document.getElementById('piechart2')); chart.draw(data, options); } </script> <div id="piechart2" style="width: 700px; height: 400px; position: relative;"></div> ``` And here's a working JS FIDDLE: http://jsfiddle.net/yRdW3/ Now, I need help on displaying the percentage and total next to each sponsor name on the legend. I have no idea how to achieve this. I want it to look similar to this:

Original source

Related problems