G6 icon indicating copy to clipboard operation
G6 copied to clipboard

使用dagre布局 设置节点水平间距时因自定义节点大小不同,导致计算错误

Open fanjiachangRyan opened this issue 2 years ago • 1 comments

问题描述

在dagre布局中 rankdir是TB 使用的自定义节点 在nodesepFunc方法中根据节点宽度来定义节点间距 这个间距是当前间距的边距离相邻节点的距离吗?还是其他的? 现在的情况就是 层级相同的节点 如果宽度相同 间距就相同 如果两个节点宽度不同 间距就会出现问题 给固定的间距又会出现覆盖的情况,这是什么原因? 是理解错了吗?

重现链接

重现步骤

1.使用dagre布局 2.创建自定义节点 节点宽度随机 3.通过nodesepFunc设置水平节点间距

预期行为

无论节点宽度多少 水平间距相同

平台

  • 操作系统: Windows
  • 网页浏览器: [Google Chrome, Safari, Firefox]
  • G6 版本: [4.5.1 ... ]

屏幕截图或视频(可选)

No response

补充说明(可选)

No response

fanjiachangRyan avatar May 13 '22 12:05 fanjiachangRyan

可将节点大小反映在数据的 size 字段中,布局中将会考虑 size 来分布节点

Yanyan-Wang avatar Jul 29 '22 03:07 Yanyan-Wang

{
      id: `${i}`,
      shape: 'circle',
      width: 32,
      height: 32,
      label: i,
      size: {
        width: 32,
        height: 32
      },
      attrs: {
        body: {
          fill: '#5F95FF',
          stroke: 'transparent'
        },
        label: {
          fill: '#ffffff'
        }
      }
    }

计算位置的时候不是根据node的width和height,而是根据node.size里的width和height

ttc9082 avatar Nov 05 '23 11:11 ttc9082