d3.js - d3 Tree - 缩放时如何自动调整节点间距

标签 d3.js

我有一个具有缩放和平移功能的 d3 树。对于任何父节点,树都可以有大量的子节点。这可能会导致垂直挤压节点。

enter image description here

我希望节点在缩小时自动调整间距,尤其是垂直间距。

附加的 d3 svg 和 d3 代码的缩放部分:

var svg = d3.select("#tree_container")
.append("svg")
  .attr("width", width + margin.right + margin.left)
  .attr("height", height + margin.top + margin.bottom)
  .call( d3.behavior.zoom().on( "zoom", function () {
                    svg.attr( "transform", "translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")" )
                } ) )
  .append("g");

Fiddle

最佳答案

设置节点大小是否足够?然后d3会自动调整节点的位置。

var radius = 10;

var tree = d3.layout.tree()
  .size([height, width])
  .nodeSize([radius*2+3]);

...

function update(source) {

  ...

  nodeUpdate.select("circle")
    .attr("r", radius)

作为Fiddle

关于d3.js - d3 Tree - 缩放时如何自动调整节点间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58389424/

相关文章:

javascript - 根据折线图中的数据,点的放置并不完美

javascript - 传单弹出窗口中的 d3.js 图表

d3.js - 当我在 nvd3 图表上有少量日期时,如何防止刻度线重复

angular - 无法在 d3 饼图上制作多行文本

javascript - 与缓存SVG数据相比,从磁盘读取SVG图标文件?

javascript - 对字符串和数字使用汇总

javascript - D3圆环图文本居中

javascript - 如何为 Windows 8 和 Android 平板电脑制作 D3js 应用程序的 Web 应用程序

colors - d3色标-与多种颜色成线性关系吗?

javascript - 在map.arc()中循环Json对象