JSFiddle - React, Tailwind, and code Playground

by Mayur Chavda

HTML

<script src="http://d3js.org/d3.v3.min.js"></script>
<svg id="view"></svg>

CSS

.node {
  stroke: #fff;
  stroke-width: 1.5px;
}

.link {
  stroke: #999;
  stroke-opacity: .6;
}

JavaScript

var data = {
  "nodes":[
    {"name":"00:00:00:00:00:00:00:01","group":0,"s":1},
    {"name":"00:00:00:00:00:00:00:02","group":1,"s":1},
    {"name":"00:00:00:00:00:00:00:03","group":2,"s":1},
    {"name":"00:00:00:00:00:00:00:11","group":0,"s":0},
    {"name":"00:00:00:00:00:00:00:21","group":1,"s":0},
    {"name":"00:00:00:00:00:00:00:31","group":2,"s":0},
    {"name":"00:00:00:00:00:00:00:32","group":2,"s":0},
    {"name":"00:00:00:00:00:00:00:12","group":0,"s":0},
    {"name":"00:00:00:00:00:00:00:22","group":1,"s":0}
  ],
  "links":[
    { "source":  0,  "target":  1,  "value":  5 },
 	{ "source":  0,  "target":  2,  "value":  5 },
  	{ "source":  2,  "target":  1,  "value":  5 },
  	{ "source":  0,  "target":  0,  "value":  5 },
  	{ "source":  1,  "target":  1,  "value":  5 },
  	{ "source":  2,  "target":  2,  "value":  5 },
  	{ "source":  3,  "target":  0,  "value":  5 },
  	{ "source":  4,  "target":  1,  "value":  5 },
  	{ "source":  5,  "target":  2,  "value":  5 },
  	{ "source":  6,  "target":  2,  "value":  5 },
  	{ "source":  7,  "target":  0,  "value":  5 },
  	{ "source":  8,  "target":  1,  "value":  5 }
  ]
};
var margin = {top: 40, right: 40, bottom: 40, left: 40},
    width = 960 - margin.left - margin.right,
    height = 500 - margin.top - margin.bottom;

var color = d3.scale.category20();

var force = d3.layout.force()
    .charge(-120)
    .linkDistance(90)
    .gravity(0.03)
    .size([width, height]);

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height);

  force
      .nodes(data.nodes)
      .links(data.links)
      .start();

  var link = svg.selectAll(".link")
      .data(data.links)
    .enter().append("line")
      .attr("class", "link")
      .style("stroke-width", function(d) { return Math.sqrt(d.value);  });

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

	var...