我正在尝试使用d3js制作Sankey图表。我正在使用csv数据源并使用基于此块的代码:http://bl.ocks.org/d3noob/c9b90689c1438f57d649从CSV渲染不正确的D3 Sankey图表
我的数据集相当大,但我认为我应该低于要打破SVG渲染器的阈值。我不确定。我的代码在使用1082行“SankeyDataSampleFunctional.csv”运行时是可用的。这里是什么样子:
我已经取得了一些细微的修改原来的代码库,以便为我的图有显着较大量的节点在某个层上,而有的则没有。这是我在sankey.js容纳它的尝试:
function initializeNodeDepth() {
var ky = d3.min(nodesByBreadth, function(nodes) {
if (nodes.length > 200){
return (size[1] - (nodes.length - 1) * 1)/d3.sum(nodes, value);
}
else if (nodes.length > 1000) {
console.log((size[1] - (nodes.length - 1) * 1)/d3.sum(nodes, value))
return (size[1] - (nodes.length - 1) * 1)/d3.sum(nodes, value);
}
return (size[1] - (nodes.length - 1) * nodePadding)/d3.sum(nodes,
value);
});
我这样做是为了打击节点之间的空间上有大量层。 但是,当我尝试添加2102更多节点的最后一层时,我会遇到各种各样的问题。这是个什么样子,当我插上“SankeyDataSample1.csv”等进入有问题的同一代码:
我检查了控制台和它说我想画负一堆东西高度。我的第一个办法是剪掉这2102个额外节点中的2101个,看看我是否可以在下一层上正确渲染一个节点。当然不是:
我尝试添加一些额外的深度分支,并继续呈现错误的方向分支:
最后,我检查这个职位约在d3 sankey中使用大型数据集的其他人:Large data set breaks d3 sankey diagram
我尝试在此帖子中强制我的身高不为零的“快速修复” :
.attr("height", function(d) { return d.dy < 0 ? 0 : d.y; })
但是,这并没有为我做很多。我也试图通过-1,是希望乘d.dy的负值反转他们,这就是我的一切:
这里是我的代码:http://plnkr.co/edit/g2rE0z?p=info
请问这是不是在SVG与最后2k个节点的限制?或者我只是想解决这个问题?任何援助将不胜感激。