Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var diameter = 960,
- format = d3.format(",d"),
- color = d3.scale.category20c();
- var bubble = d3.layout.pack()
- .sort(null)
- .size([diameter, diameter])
- .padding(1.5);
- var fisheye = d3.fisheye.circular().radius(120);
- var svg = d3.select("body").append("svg")
- .attr("width", diameter)
- .attr("height", diameter)
- .attr("class", "bubble");
- //d3.json("flare.json", function (error, root) {
- var root = jsonfilegroups;
- var node = svg.selectAll(".node")
- .data(bubble.nodes(classes(root))
- .filter(function (d) {
- return !d.children;
- }))
- .enter().append("g")
- .attr("class", "node")
- .attr("transform", function (d) {
- return "translate(" + d.x + "," + d.y + ")";
- });
- node.append("title")
- .text(function (d) {
- return d.className + ": " + format(d.value);
- });
- node.append("circle")
- .attr("r", function (d) {
- return d.r;
- })
- .style("fill", function (d) {
- return color(d.packageName);
- });
- node.append("text")
- .attr("dy", ".3em")
- .style("text-anchor", "middle")
- .text(function (d) {
- return d.className.substring(0, d.r / 3);
- });
- svg.on("mousemove", function () {
- fisheye.focus(d3.mouse(this));
- node.each(function (d) {
- d.fisheye = fisheye(d);
- });
- node.selectAll("circle")
- .attr("cx", function(d) { return d.fisheye.x - d.x; })
- .attr("cy", function(d) { return d.fisheye.y - d.y; })
- .attr("r", function(d) { return d.fisheye.z * d.r; });
- node.selectAll("text")
- .attr("dx", function(d) { return d.fisheye.x - d.x; })
- .attr("dy", function(d) { return d.fisheye.y - d.y; });
- });
- // Returns a flattened hierarchy containing all leaf nodes under the root.
- function classes(root) {
- var classes = [];
- function recurse(name, node) {
- if (node.children) node.children.forEach(function (child) {
- recurse(node.name, child);
- });
- else classes.push({
- packageName: name,
- className: node.name,
- value: node.size
- });
- }
- recurse(null, root);
- return {
- children: classes
- };
- }
- d3.select(self.frameElement).style("height", diameter + "px");
Add Comment
Please, Sign In to add comment