встраивание json в файл javascript sankey d3

У меня возникают проблемы с CORS при использовании файла csv для заполнения диаграммы sankey, поэтому я хотел бы заменить его встроенным json для целей тестирования. Я переформатировал данные csv, чтобы привести их в формат, необходимый для плагина d3 sankey, но я не могу понять, как заставить javascript читать ввод json вместо csv.

Код, который я использовал для загрузки csv, выглядит следующим образом:

/ load the data with d3.csv
d3.csv("testinput.csv", function(error, data) {

	graph = {"nodes" : [], "links" : []};

  data.forEach(function (d, i) {
    var item = { source: d.source, target: d.target, values: [] };
    for (var j=0; j < 101; j++) {
      item.values.push(d['value'+j.toString()]);
    }
    portfolioValues.push(item);
    graph.nodes.push({ "name": d.source });
    graph.nodes.push({ "name": d.target });
    graph.links.push({
        source: portfolioValues[i].source,
        target: portfolioValues[i].target,
        value: portfolioValues[i].values[startingAllocation]
    });
  });

  //this handy little function returns only the distinct / unique nodes
  graph.nodes = d3.keys(d3.nest()
           .key(function (d) { return d.name; })
           .map(graph.nodes));

  //it appears d3 with force layout wants a numeric source and target
  //so loop through each link replacing the text with its index from node
  graph.links.forEach(function (d, i) {
      graph.links[i].source = graph.nodes.indexOf(graph.links[i].source);
      graph.links[i].target = graph.nodes.indexOf(graph.links[i].target);
      portfolioValues[i].source = graph.links[i].source;
      portfolioValues[i].target = graph.links[i].target;
  });

  //now loop through each nodes to make nodes an array of objects rather than an array of strings
  graph.nodes.forEach(function (d, i) {
      graph.nodes[i] = { "name": d };
  });

JSON, который я хотел бы использовать, это:

{
"nodes": [
{"node":1,"name":"AA"},
{"node":2,"name":"BB"},
{"node":3,"name":"XX"},
{"node":4,"name":"YY"}
],
"links": [
{"target":3,"source":1,"value":300},
{"target":4,"source":2,"value":0},
{"target":3,"source":2,"value":0},
{"target":4,"source":2,"value":200}
]}


person wlf211    schedule 03.02.2015    source источник


Ответы (1)


Вот jsfiddle Sankey diagram:

введите здесь описание изображения

json полностью встроен в javascript и инкапсулирован в функцию getData().

person VividD    schedule 08.02.2015
comment
Это потрясающе. Спасибо! - person wlf211; 10.02.2015