code: function createVisualization(data) {
    var json = buildHierarchy(data);
  
    // Basic setup of page elements.
    initializeBreadcrumbTrail();
  
    // Bounding circle underneath the sunburst, to make it easier to detect
    // when the mouse leaves the parent g.
    vis.append("svg:circle")
        .attr("r", radius)
        .style("opacity", 0);
  
    // For efficiency, filter nodes to keep only those large enough to see.
    var nodes = partition.nodes(json)
        .filter(function(d) {
        return (d.dx > 0.005); // 0.005 radians = 0.29 degrees
        });
  
    var path = vis.data([json]).selectAll("path")
        .data(nodes)
        .enter().append("svg:path")
        .attr("display", function(d) { return d.depth ? null : "none"; })
        .attr("d", arc)
        .attr("fill-rule", "evenodd")
        .style("fill", function(d) { return colors[d.depth]; })
        .style("opacity", 1)
        .on("mouseover", mouseover);
  
    // Add the mouseleave handler to the bounding circle.
    d3.select("#container").on("mouseleave", mouseleave);
  
    // Get total size of the tree = value of root node from partition.
    totalSize = path.node().__data__.value;
   }
docs: Main function to draw and set up the visualization, once we have the data.