Problems creating Sankey diagrams using d3.js (3) -


this in relation previous questions "problems creating sankey diagrams using d3.js (1 , 2)

here i'm trying replicate example provided malcolm maclean in book "d3 tips , tricks" implementation of "sankey-formatted-json" works, mine doesn't:>)

my test dataset (testdrive_ext'json) is

{ "nodes":[ {"node":0,"name":"node0"}, {"node":1,"name":"node1"}, {"node":2,"name":"node2"}, {"node":3,"name":"node3"}, {"node":4,"name":"node4"}, {"node":5,"name":"node5"}, {"node":6,"name":"node6"}, {"node":7,"name":"node7"}, {"node":8,"name":"node8"}, {"node":9,"name":"node9"}, {"node":10,"name":"node10"}, {"node":11,"name":"node11"}, {"node":12,"name":"node12"}, {"node":13,"name":"node13"}, {"node":14,"name":"node14"}, {"node":15,"name":"node15"}, {"node":16,"name":"node16"}, {"node":17,"name":"node17"} ], "links":[ {"source":3,"target":0,"value":1}, {"source":3,"target":1,"value":2}, {"source":5,"target":1,"value":1}, {"source":0,"target":2,"value":1}, {"source":3,"target":2,"value":1}, {"source":4,"target":2,"value":1}, {"source":16,"target":2,"value":1}, {"source":4,"target":3,"value":4}, {"source":7,"target":3,"value":1}, {"source":12,"target":3,"value":1}, {"source":10,"target":4,"value":1}, {"source":12,"target":4,"value":1}, {"source":13,"target":4,"value":1}, {"source":1,"target":5,"value":1}, {"source":16,"target":5,"value":1}, {"source":13,"target":6,"value":1}, {"source":14,"target":6,"value":1}, {"source":0,"target":7,"value":1}, {"source":2,"target":7,"value":1}, {"source":12,"target":7,"value":1}, {"source":4,"target":8,"value":1}, {"source":16,"target":10,"value":1}, {"source":11,"target":12,"value":1}, {"source":15,"target":12,"value":1}, {"source":7,"target":13,"value":2}, {"source":11,"target":13,"value":1}, {"source":6,"target":14,"value":2}, {"source":0,"target":15,"value":2}, {"source":6,"target":15,"value":3}, {"source":9,"target":15,"value":1}, {"source":12,"target":15,"value":3}, {"source":4,"target":16,"value":1}, {"source":5,"target":16,"value":1}, {"source":9,"target":16,"value":1}, {"source":10,"target":16,"value":1}, {"source":1,"target":17,"value":1}, {"source":6,"target":17,"value":1} ]} 

the code copied malcolm's example

<!doctype html> <meta charset="utf-8"> <title>sankey experiment</title> <style>  .node rect {   cursor: move;   fill-opacity: .9;   shape-rendering: crispedges; }  .node text {   pointer-events: none;   text-shadow: 0 1px 0 #fff; }  .link {   fill: none;   stroke: #000;   stroke-opacity: .2; }  .link:hover {   stroke-opacity: .5; }  </style> <body>  <p id="chart">  <script type="text/javascript" src="d3/d3.v3.js"></script> <script src="js/sankey.js"></script> <script>  var units = "widgets";  var margin = {top: 10, right: 10, bottom: 10, left: 10},     width = 700 - margin.left - margin.right,     height = 300 - margin.top - margin.bottom;  var formatnumber = d3.format(",.0f"),    // 0 decimal places     format = function(d) { return formatnumber(d) + " " + units; },     color = d3.scale.category20();  // append svg canvas page var svg = d3.select("#chart").append("svg")     .attr("width", width + margin.left + margin.right)     .attr("height", height + margin.top + margin.bottom)   .append("g")     .attr("transform",            "translate(" + margin.left + "," + margin.top + ")");  // set sankey diagram properties var sankey = d3.sankey()     .nodewidth(15)     .nodepadding(10)     .size([width, height]);  var path = sankey.link();  // load data d3.json("data/testdrive_ext.json", function(error, graph) {    sankey       .nodes(graph.nodes)       .links(graph.links)       .layout(32);   // add in links   var link = svg.append("g").selectall(".link")       .data(graph.links)     .enter().append("path")       .attr("class", "link")       .attr("d", path)       .style("stroke-width", function(d) { return math.max(1, d.dy); })       .sort(function(a, b) { return b.dy - a.dy; });  // add link titles   link.append("title")         .text(function(d) {             return d.source.name + " → " +                  d.target.name + "\n" + format(d.value); });  // add in nodes   var node = svg.append("g").selectall(".node")       .data(graph.nodes)     .enter().append("g")       .attr("class", "node")       .attr("transform", function(d) {            return "translate(" + d.x + "," + d.y + ")"; })     .call(d3.behavior.drag()       .origin(function(d) { return d; })       .on("dragstart", function() {            this.parentnode.appendchild(this); })       .on("drag", dragmove));  // add rectangles nodes   node.append("rect")       .attr("height", function(d) { return d.dy; })       .attr("width", sankey.nodewidth())       .style("fill", function(d) {            return d.color = color(d.name.replace(/ .*/, "")); })       .style("stroke", function(d) {            return d3.rgb(d.color).darker(2); })     .append("title")       .text(function(d) {            return d.name + "\n" + format(d.value); });  // add in title nodes   node.append("text")       .attr("x", -6)       .attr("y", function(d) { return d.dy / 2; })       .attr("dy", ".35em")       .attr("text-anchor", "end")       .attr("transform", null)       .text(function(d) { return d.name; })     .filter(function(d) { return d.x < width / 2; })       .attr("x", 6 + sankey.nodewidth())       .attr("text-anchor", "start");  // function moving nodes   function dragmove(d) {     d3.select(this).attr("transform",          "translate(" + d.x + "," + (                 d.y = math.max(0, math.min(height - d.dy, d3.event.y))             ) + ")");     sankey.relayout();     link.attr("d", path);   } });  </script>  </body> </html> 

again, doesn't throw errors in javascript console diagram doesn't render said malcolm's does

a jsfiddle, don't understand how interpret, available @ http://jsfiddle.net/dzy82f/z6bex/

once more, insights me understand i'm going wrong appreciated

many thanks

julian


Comments

Popular posts from this blog

css - Which browser returns the correct result for getBoundingClientRect of an SVG element? -

gcc - Calling fftR4() in c from assembly -

Function that returns a formatted array in VBA -