Search code examples
javascriptchartspie-chartc3.js

Create custom tooltip data C3 pie chart


Im trying to create a detailed tooltip on C3 pie chart (source), here my starting code :

var chart = c3.generate({
     data: {
         columns: [
             ['Error', 72,15,11],
             ['Success', 58,42,5],
        ],
        type : 'pie'
     },
     tooltip: {
         format: {
             title: function (d) { return 'Data ' + d; },
             name : function(name) { return  name; }
         }
     } 
});

Here what i want to display : Pie with detailed tooltip

I Tried with an array in data with no-success

 columns: [
        ['Error': {name : 'Stage 1', value : 72},{name : 'Stage 2', value : 15},{name : 'Stage 3', value : 11}],
        ['Success': {name : 'Stage 1', value : 58},{name : 'Stage 2', value : 42},{name : 'Stage 3', value : 5}],
    ],

Here my JSFiddle


Solution

  • It seems like grouping the tooltip isn't implemented for pie charts.
    The only way I found that works is to make a copy of the data array and return a custom tooltip:

    var columns =  [
                 ['Error', 72,15,11],
                 ['Success', 58,42,5], ];
    
    var chart = c3.generate({
         data: {
             columns: [
                 ['Error', 72,15,11],
                 ['Success', 58,42,5],
            ],
            type : 'pie'
         },
         tooltip: {
           contents: function() { 
            return "<p>" + columns[0][0] + "<span>" + columns[0][1] + "</span></p>"
                         + "</br>" +
                   "<p>" + columns[1][0] + "<span>" + columns[1][1] + "</span></p>"
           } 
         } 
    });
    

    Now you get the idea. Customize your tooltip however you like.