// INPUT dataset = [ { group: "Grp 1" ,category: "Cat 1", count: 1}, { group: "Grp 1" ,category: "Cat 2", count: 3}, { group: "Grp 1" ,category: "Cat 3", count: 5}, { group: "Grp 1" ,category: "Cat 4", count: 4}, { group: "Grp 2" ,category: "Cat 1", count: 6}, { group: "Grp 2" ,category: "Cat 2", count: 2}, { group: "Grp 3" ,category: "Cat 1", count: 5}, { group: "Grp 3" ,category: "Cat 2", count: 4}, { group: "Grp 4" ,category: "Cat 1", count: 1}, { group: "Grp 4" ,category: "Cat 3", count: 4}, { group: "Grp 4" ,category: "Cat 5", count: 2}, { group: "Grp 5" ,category: "Cat 2", count: 6}, { group: "Grp 5" ,category: "Cat 4", count: 2}, { group: "Grp 5" ,category: "Cat 5", count: 1}, { group: "Grp 6" ,category: "Cat 1", count: 7}, { group: "Grp 6" ,category: "Cat 2", count: 3}, { group: "Grp 6" ,category: "Cat 3", count: 2}, { group: "Grp 6" ,category: "Cat 4", count: 1}, { group: "Grp 6" ,category: "Cat 5", count: 5}, { group: "Grp 6" ,category: "Cat 6", count: 3}, ]; var flags = [], unique_categories = [], unique_groups=[], l = dataset.length, i; for( i=0; iGroup: " + d.group+ ""); tooltip.select('.category').html("Category: " + d.category+ ""); tooltip.select('.count').html("Count: " + d.x + ""); tooltip.style('display', 'block'); tooltip.style('opacity',2); }) .on('mousemove', function(d) { tooltip.style('top', (d3.event.layerY + 10) + 'px') .style('left', (d3.event.layerX - 25) + 'px'); }) .on('mouseout', function() { tooltip.style('display', 'none'); tooltip.style('opacity',0); });