Ok ... I use Zoomable Circle Packing from http://bl.ocks.org/mbostock/7607535 I opened the flare.json file and started messing with it and was able to process it successfully. It looks like this:
flare.json
{ "name": "flare", "children": [ { "name": "Kommunikation und Umwelt", "children": [ { "name": "Courses", "children": [ { "name": "AO-Psy.", "children": [ {"name": "Prof. A", "size": 5731,"url":"google.com"}, {"name": "Prof. B", "size": 5731}, {"name": "Prof. C", "size": 5731} ] }, { "name": "E&E", "children": [ {"name": "Prof. D", "size": 5731}, {"name": "Prof. E", "size": 5731}, {"name": "Prof. F", "size": 5731}, {"name": "Prof. G", "size": 5731}, {"name": "Prof. H", "size": 5731} ] }, { "name": "IBSS", "children": [ {"name": "Prof. I", "size": 5731}, {"name": "Prof. J", "size": 5731}, {"name": "Prof. K", "size": 5731} ] }, {"name": "", "size": 0}, { "name": "E-Gov", "children": [ {"name": "Prof. L", "size": 5731}, {"name": "Prof. M", "size": 5731}, {"name": "Prof. N", "size": 5731} ] }, { "name": "Muki", "children": [ {"name": "Prof. O", "size": 5731}, {"name": "Prof. P", "size": 5731}, {"name": "Prof. Q", "size": 5731}, {"name": "Prof. V", "size": 5731} ] }, {"name": "Schedule", "size": 5731}, {"name": "News", "size": 5731}, {"name": "Events", "size": 5731}, {"name": "Search", "size": 5731}, {"name": "", "size": 0} ] }, {"name": "", "size": 0} ]
},
What I want to do now is try to add hyperlinks. For example, I want to be able to click "ProfA" and go to another html page that I will create. Is there any modification I can do for flare.json that will do this?
I already found some posts Post1 Post2 Post3
but nothing works, it just zooms out.
here is the full html file, flare.json is already posted here (short part)
zoom.html:
<html xmlns:xlink="http://www.w3.org/1999/xlink"> <meta charset="utf-8"> <style> .node { cursor: pointer; } .node:hover { stroke: #000; stroke-width: 1.5px; } .node--leaf { fill: #14DCD2; } .label { font: 20px "Helvetica Neue", Helvetica, Arial, sans-serif; text-anchor: middle; text-shadow: 0 1px 0 #fff, 1px 0 0 #fff, -1px 0 0 #fff, 0 -1px 0 #fff; } .label, .node--root, .node--leaf { pointer-events: none; } </style> <body> <script src="http://d3js.org/d3.v3.min.js"></script> <script> var margin = 600, diameter = 1920; var color = d3.scale.linear() .domain([-1, 5]) .range(["hsl(152,80%,80%)", "hsl(228,30%,40%)"]) .interpolate(d3.interpolateHcl); var pack = d3.layout.pack() .padding(2) .size([diameter - margin, diameter - margin]) .value(function(d) { return d.size; }) var svg = d3.select("body").append("svg") .attr("width", diameter) .attr("height", diameter) .append("g") .attr("transform", "translate(" + diameter / 2 + "," + diameter / 2 + ")"); d3.json("flare.json", function(error, root) { if (error) return console.error(error); var focus = root, nodes = pack.nodes(root), view; var circle = svg.selectAll("circle") .data(nodes) .enter().append("circle") .attr("class", function(d) { return d.parent ? d.children ? "node" : "node node--leaf" : "node node--root"; }) .style("fill", function(d) { return d.children ? color(d.depth) : null; }) .on("click", function(d) { if (focus !== d) zoom(d), d3.event.stopPropagation(); }) var text = svg.selectAll("text") .data(nodes) .enter().append("text") .attr("class", "label") .style("fill-opacity", function(d) { return d.parent === root ? 1 : 0; }) .style("display", function(d) { return d.parent === root ? null : "none"; }) .text(function(d) { return d.name; }) </script> </html>