anchor.diff:              return relationshipData(pacticipant, relationships);
           }).enter()
           .append("path")
  -        .attr("d", function(d){ return pactPath(d, nodeLocations, pacticipants); })
  +        .attr("d", function(d){ return relationshipPath(d, nodeLocations, pacticipants); })
           .attr("stroke", relationshipColour).attr("stroke-width", ".35")
           .attr("opacity", ".5")
           .attr("fill", "none")
  
positive.code:     svg.selectAll("path").transition().duration(500).attr("stroke-width", ".35").attr("opacity", ".5");
  };
  
  window.onload = function() {
      var legendHeight = 200;
      windowWidth = window.innerWidth;
  
negative.code:     return pacticipants.map(function(p){ return p.pacticipantName });
  };
  
  var relationshipPath = function(relationship, nodeLocations, pacticipants) {
      var dx = nodeLocations[relationship[1]].x - nodeLocations[relationship[0]].x;
      var dy = nodeLocations[relationship[1]].y - nodeLocations[relationship[0]].y;
      var dr = Math.sqrt(dx * dx + dy * dy);
      var inout = 1;
      if ((nodeLocations[relationship[1]].i > nodeLocations[relationship[0]].i && Math.abs(nodeLocations[relationship[1]].i - nodeLocations[relationship[0]].i) <= pacticipants.length / 2) || (nodeLocations[relationship[1]].i < nodeLocations[relationship[0]].i && Math.abs(nodeLocations[relationship[1]].i - nodeLocations[relationship[0]].i) >= pacticipants.length / 2)) {
          inout = 0;
      }
      return "M" + 0 + "," + 0 + "A" + dr + ", " + dr + " 0 0," + inout + " " + dx + "," + dy;
  };
  