我正在嘗試使用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個節點的限制?或者我只是想解決這個問題?任何援助將不勝感激。