radial Dendrogram for blog

Code as per output from R2D3

by b_g_v

HTML

<script src="http://d3js.org/d3.v3.min.js"></script>
<script type="application/json" id="data">
    {
        "name": "node48",
            "children": [{
            "name": "node45",
                "children": [{
                "name": "node35",
                    "children": [{
                    "name": "node25",
                        "children": [{
                        "name": "Washington",
                            "size": 1
                    }, {
                        "name": "node15",
                            "children": [{
                            "name": "Oregon",
                                "size": 1
                        }, {
                            "name": "node10",
                                "children": [{
                                "name": "Wyoming",
                                    "size": 1
                            }, {
                                "name": "node6",
                                    "children": [{
                                    "name": "Oklahoma",
                                        "size": 1
                                }, {
                                    "name": "Virginia",
                                        "size": 1
                                }]
                            }]
                        }]
                    }]
                }, {
                    "name": "node32",
                        "children": [{
                        "name": "Rhode Island",
                            "size": 1
                    }, {
                        "name": "node12",
                            "children": [{
                            "name": "Massachusetts",
                                "size": 1
                        }, {
                            "name": "New Jersey",
                                "size": 1
                        }]
                    }]
                }]
            }, {
                "name": "node39",
      ...

CSS

.node circle {
    fill: #fff;
    stroke: steelblue;
    stroke-width: 1.5px;
}
.node {
    font: 15px sans-serif;
}
.link {
    fill: none;
    stroke: #ccc;
    stroke-width: 1.5px;
}

JavaScript

var radius = 800 / 2;

var cluster = d3.layout.cluster()
    .size([360, radius - 120]);

var diagonal = d3.svg.diagonal.radial()
    .projection(function (d) {
    return [d.y, d.x / 180 * Math.PI];
});

var svg = d3.select("body").append("svg")
    .attr("width", radius * 2 + 100)
    .attr("height", radius * 2 + 100)
    .append("g")
    .attr("transform", "translate(" + radius + "," + radius + ")");

var data = document.getElementById('data').innerHTML;
root = JSON.parse(data);
var nodes = cluster.nodes(root);

var link = svg.selectAll("path.link")
    .data(cluster.links(nodes))
    .enter().append("path")
    .attr("class", "link")
    .attr("d", diagonal);

var node = svg.selectAll("g.node")
    .data(nodes)
    .enter().append("g")
    .attr("class", "node")
    .attr("transform", function (d) {
    return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")";
})

node.append("circle")
    .attr("r", 4.5);

node.append("text")
    .attr("dy", ".31em")
    .attr("text-anchor", function (d) {
    return d.x < 180 ? "start" : "end";
})
    .attr("transform", function (d) {
    return d.x < 180 ? "translate(8)" : "rotate(180)translate(-8)";
})
    .text(function (d) {
    return d.name;
});

d3.select(self.frameElement).style("height", radius * 2 + "px");