避免d3.js中树布局中的节点重叠

 低调pasta_730 发布于 2023-02-07 11:04

我创建了一个可折叠树来表示一些生物数据.

在此树中,节点的大小表示节点的重要性.由于我拥有庞大的数据,并且节点的大小也各不相同,因此它们相互重叠.我需要指定兄弟节点之间的距离.

我尝试了tree.separation()方法,但它没有用.

代码如下:

tree.separation(seperator);

function seperator(a, b)
{
    if(a.parent == b.parent)
    {
        if((a.abundance == (maxAbd)) || (b.abundance == (maxAbd)))
        {
            return 2;
        }
        else
        {
            return 1;
        }
    }
}

这让我错误说:

Unexpected value translate(433.33333333333337,NaN) parsing transform attribute.

我知道在添加分离方法后,它无法计算节点的x坐标.任何人都可以帮我解决这个问题吗?

我也尝试按照https://groups.google.com/forum/#!topic/d3-js/7Js0dGrnyek中的建议修改源代码,但这也无效.

请提出一些解决方案.

1 个回答
  • 我有同样的问题.这就是我解决它的方式.我为每个节点分配了宽度,现在的高度对于所有节点都是相同的(基本上高度小于nodeHeight的节点,垂直居中):

    var tree = d3.layout.tree().nodeSize([1, nodeHeight])
               .separation(function(a, b) {
                   var width = a.width + b.width,
                       distance = width / 2 + 16; // horizontal distance between nodes = 16
                       return distance;
               }),
        nodes = tree.nodes(data),
        links = tree.links(nodes);
    

    希望这可以帮助.

    2023-02-07 11:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有