JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
<div id="holder">
  <div class="serieschart" data-role="serieschart" data-width=450 data-height=180></div>
</div>

CSS

body {
    background: #eeeeee;
}

.serieschart {
}

.series {
    border: 1px solid #bdc3c7;
    padding: 50px;
    background: #ecf0f1;
}

.gold {
    fill: #f38d04;
}

.blue {
    fill: #04b9ee;
}

.label-layer1 {
    font-size: 14px;
    font-family: "Helvetica";
    fill: orange;
}

.label-layer0 {
    font-weight: bold;
    font-size: 12px;
    font-family: "Helvetica";
    font-variant: small-caps;
    fill: #34495e;
}

.label-layer2 {
    font-weight: bold;
    font-size: 12px;
    font-family: "Helvetica";
    font-variant: small-caps;
    fill: #2980b9;
}

.label-layer3 {
    font-size: 14px;
    font-family: "Helvetica";
    font-variant: small-caps;
//fill: #3498db;
}

.pointer0 {
    fill: none;
    stroke: #34495e;
}

.pointer1 {
    fill: none;
    stroke: orange;
}

.pointer2 {
    fill: none;
    stroke: none;
}

JavaScript

$(document).ready(function() {

    // ------------------------------------------------------------------------------------
    // Declarations
    // ------------------------------------------------------------------------------------
    var el = $(".serieschart");//selector
    var corelabels;
    var dropShadowFilter, intenseShadow;
    var width = el.data("width");
    var height = el.data("height");
    var margin = {
        top: 65,
        right: 90,
        bottom: 5,
        left: 150
    };
    var items = [];
    var layerData = [];
    var distancesL0 = [];
    var distancesL1 = [];


    var rawData = [{
        "name": "Twitter",
        "vists": "15 billion",
        "unit": "per day",
        "layer1value": 1500000,
      	"layer2value": 15450

    }, {
        "name": "Facebook",
        "vists": "5 billion",
        "unit": "per day",
        "layer1value": 5000000,
        "layer2value": 2000
    }, {
        "name": "Google",
        "vists": "5 billion",
        "unit": "per day",
        "layer1value": 50000,
        "layer2value": 35000
    }, {
        "name": "Netflix",
        "vists": "10 billion",
        "unit": "per day",
        "layer1value": 3000000,
        "layer2value": 2200
    }, {
        "name": "Ebay",
        "vists": "8 billion",
        "unit": "per day",
        "layer1value": 2500000,
        "layer2value": 17700
    }, {
        "name": "Klout",
        "vists": "2 billion",
        "unit": "per day",
        "layer1value": 1000000,
        "layer2value": 45
    }];
		
     var dd1 = [];
    var dd2 = [];

    $.each(rawData, function(k, v){
        dd1.push(v["layer1value"]);
        dd2.push(v["layer2value"]);
    });

    var meansPerGroup = [Math.max.apply(null, dd1), Math.max.apply(null, dd2)];
    
    function getCircleSize(j, key, data) {

        function getPercentage(value, total) {
            return ((value * 100 )/ total);
        }

        var layerArray = [];
        var total = 0;

       ...