繁体   English   中英

在sankey d3 javascript文件中嵌入json

[英]embedding json in sankey d3 javascript file

我在使用csv文件填充sankey图时遇到CORS问题,因此出于测试目的,我想将其替换为嵌入式json。 我已经将csv数据重新格式化为d3 sankey插件所需的格式,但是我不知道如何获取JavaScript来代替csv读取json输入。

我用来加载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} ]} 

Sankey diagram jsfiddle:

在此处输入图片说明

json完全嵌入javascript中,并封装在getData()函数中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM