Javascript D3.js-缩放半径后,如何在边界内保持力导向布局
目前,我有一个强制导向布局,如果数据太大,节点和链接将超出svg边界。我的勾号功能包括:Javascript D3.js-缩放半径后,如何在边界内保持力导向布局,javascript,d3.js,force-layout,directed-graph,d3-force-directed,Javascript,D3.js,Force Layout,Directed Graph,D3 Force Directed,目前,我有一个强制导向布局,如果数据太大,节点和链接将超出svg边界。我的勾号功能包括: node .attr('cx', function(d) {return d.x}) .attr('cy', function(d) {return d.y}) 我确实看到参考文献建议: node .attr("cx", function(d) { return d.x = Math.max(radius, Math.min(width - radius, d.x)); })
node
.attr('cx', function(d) {return d.x})
.attr('cy', function(d) {return d.y})
我确实看到参考文献建议:
node
.attr("cx", function(d) { return d.x = Math.max(radius, Math.min(width - radius, d.x)); })
.attr("cy", function(d) { return d.y = Math.max(radius, Math.min(height - radius, d.y)); });
“我的节点”的半径使用以下比例:
var scaleR = d3.scaleSqrt()
.domain(d3.extent(graph.nodes, function(d) {return d.frequency})
.range([1,20])
如何在tick函数中引用每个节点的半径
提前感谢使用以下命令,将半径值替换为缩放函数:
node
.attr("cx", function(d) { return d.x = Math.max(scaleR(d.frequency) , Math.min(width - scaleR(d.frequency), d.x)); })
.attr("cy", function(d) { return d.y = Math.max(scaleR(d.frequency) , Math.min(height - scaleR(d.frequency), d.y)); });