SimilarityCluster

by gauravameta

JavaScript

var w = 1000;
var h = 900;
var linkDistance = 50;

var colors = d3.scale.category10();




var svg = d3.select("body").append("svg").attr({
  "width": w,
  "height": h
});

function update(dataset) {
  var force = d3.layout.force()
    .nodes(dataset.nodes)
    .links(dataset.edges)
    .size([w, h])
    .linkDistance(function(d){return linkDistance*5*d.Weight*d.Weight*d.Weight;})
    .charge([-500])
    //.theta(0.1)
    .gravity(0.2)
    .start();



  var edges = svg.selectAll("line")
    .data(dataset.edges)
    .enter()
    .append("line")
    .attr("id", function(d, i) {
      return 'edge' + i
    })
    .attr('marker-end', function(d) {
      if (d.type == 0) return 'url(#arrowhead)';
      else return '';
    })
    .style("stroke", function(d) {
      if (d.type == 0) return '#cccccc';
      else return '#000000';
    })
    .style("pointer-events", "none")
    //.linkDistance(function(d){return linkDistance*d.Weight;});

  var nodes = svg.selectAll("circle")
    .data(dataset.nodes)
    .enter()
    .append("circle")
    .attr({
      "r": 15
    })
    .style("fill", function(d) {
      if (d.Group == 0) return d3.rgb(150, 150, 200);
      else if (d.Group == 1) return d3.rgb(150, 200, 150);
      else if (d.Group == 2) return d3.rgb(200, 150, 150);
    })
    .call(force.drag)


  var nodelabels = svg.selectAll(".nodelabel")
    .data(dataset.nodes)
    .enter()
    .append("text")
    .attr({
      "x": function(d) {
        return d.x;
      },
      "y": function(d) {
        return d.y;
      },
      "class": "nodelabel",
      "stroke": "black",
      "font-size": "12px"
    })
    .text(function(d) {
      return d.name;
    });

  var edgepaths = svg.selectAll(".edgepath")
    .data(dataset.edges)
    .enter()
    .append('path')
    .attr({
      'd': function(d) {
        return 'M ' + d.source.x + ' ' + d.source.y + ' L ' + d.target.x + ' ' + d.target.y
      },
      'class': 'edgepath',
      'fill-opacity': 0,
      'stroke-opacity':...