Apa vs. non-Apa Author Pubs

http://stackoverflow.com/questions/21231919/circle-packs-as-nodes-of-a-d3-force-layout

by Nivaldo

HTML

<script src="http://d3js.org/d3.v2.js"></script>

JavaScript

var width = 600,
    height = 500,
    data = [{
        value: 500,
        pctFull: 0.20,
        name: "20%"
    }, {
        value: 200,
        pctFull: 0.20,
        name: "20%"
    }, {
        value: 300,
        pctFull: 0.20,
        name: "20%"
    }, {
        value: 1250,
        pctFull: 0.75,
        name: "75%"
    }, {
        value: 1600,
        pctFull: 0.25,
        name: "20%"
    }, {
        value: 1250,
        pctFull: 0.65,
        name: "65%"
    }, {
        value: 1100,
        pctFull: 0.05,
        name: "5%"
    }, {
        value: 1050,
        pctFull: 0.35,
        name: "35%"
    }, {
        value: 1700,
        pctFull: 0.40,
        name: "40%"
    }, ],
    kVals = [],
    rVals = [],
    hVals = [];

// calculate k for each data object as described: http://bl.ocks.org/3422480
function kCalculation() {
    var i,
        j,
        t0,
        t1,
        k;

    for (i = 0; i < data.length; i += 1) {
        k = data[i].pctFull
        t1 = data[i].pctFull * 2 * Math.PI;
        if (data[i].pctFull > 0 && data[i].pctFull < 1) {
            t1 = Math.pow(12 * k * Math.PI, 1 / 3);
            for (j = 0; j < 10; j += 1) {
                t0 = t1;
                t1 = (Math.sin(t0) - t0 * Math.cos(t0) +
                      2 * k * Math.PI) / (1 - Math.cos(t0));
            }
            k = (1 - Math.cos(t1/2)) / 2;
        }
        kVals.push(k)
    }
}

// calculate r of each item so that area scales to value
function rCalculation() {
    var i, r;

    for (i = 0; i < data.length; i += 1) {
        rVals.push(Math.sqrt(data[i].value / Math.PI) * 2);
    }
}

function drawGraph() {
    
    //create chart
    var chart = d3.select('body')
        .append('svg')
        .attr('width', width)
        .attr('height', height);

    //create force layout
    var force = d3.layout.force()
        .nodes(data)
        .size([width, height])
        .linkDistance(10)
        .charge(function (d, i) {
            return rVals[i]...