首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >D3.js-Dendrogram显示调整到树形图

D3.js-Dendrogram显示调整到树形图
EN

Stack Overflow用户
提问于 2021-09-10 09:54:33
回答 1查看 205关注 0票数 0

使用d3.js,我创建了d3树状图来可视化对象之间的层次关系。图的尺寸和边距是用固定的高度和宽度定义的。

代码语言:javascript
复制
var width = 1000,
    height = 800,
    boxWidth = 150,
    boxHeight = 35,
    gap = {
        width: 50,
        height: 12
    },
    margin = {
        top: 16,
        right: 16,
        bottom: 16,
        left: 16
    },
    svg;

有几个关系,显示是可以的,但与许多关系它不适合,图形是‘切’,我不能看到整个图。如何动态设置此宽度和高度属性并根据图形的大小进行调整?

一个正确显示的示例:科德芬

显示不正确的示例:科德芬

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-10 11:53:06

让我们解决这个问题,您需要首先了解内容的边框,然后调整svg大小。要做到这一点,在这种情况下,您只需查看框或节点,就可以忽略链接。

考虑到这一点,您可以在您的Nodes函数中填充renderRelationshipGraph并返回计算值之后执行以下操作:

代码语言:javascript
复制
function renderRelationshipGraph(data) {

    // ...

    var bbox = Nodes.reduce(function (max, d)
    {
      var w = d.x + boxWidth;
      var h = d.y + boxHeight;
      if (w > max[0]) {max[0] = w}
      if (h > max[1]) {max[1] = h}
      
      return max                               
    }, [0,0])

    return bbox
}

然后对主代码进行更改,使用它更新svg的高度和宽度:

代码语言:javascript
复制
svg = d3.select("#tree").append("svg")
    .attr("width", width)
    .attr("height", height);
    
    svg.append("g");
    
    var bbox = renderRelationshipGraph(data);
      svg.attr("width", bbox[0])
      .attr("height", bbox[1]);

您可以添加一个转换并限制高度,但是这样做的结果非常大。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69130475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档