Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DagreLayout计算后节点排布问题 #206

Open
xingzilong opened this issue Feb 18, 2024 · 11 comments
Open

DagreLayout计算后节点排布问题 #206

xingzilong opened this issue Feb 18, 2024 · 11 comments

Comments

@xingzilong
Copy link

如下图所示,怎么才能使节点“3”和节点“2”在X方向上对齐,是有相关的配置吗?
antv

@xingzilong xingzilong changed the title DagreLayout计算后节点 DagreLayout计算后节点排布问题 Feb 18, 2024
@xw-xw12
Copy link

xw-xw12 commented Mar 15, 2024

我也想知道

@xingzilong
Copy link
Author

xingzilong commented Apr 25, 2024

找到了一种方法,rankdir设置为RL,然后把原本节点的连线关系对调一下。就会得到里理想的效果。
(我的本意是只想要优化后的节点的位置,连线关系我还是用我先前的,所以这样也算是达到了要求)
屏幕截图 2024-04-25 1400472

@k644606347
Copy link

k644606347 commented Apr 25, 2024

提供个方法,虽然不确定行不行,但可以换ranker试试:
{ ranker: 'network-simplex'  | 'tight-tree' | 'longest-path' }
这是dragre.js内置的三个ranker,@antv/layout也继承了下来

@xw-xw12
Copy link

xw-xw12 commented Apr 25, 2024

提供个方法,虽然不确定行不行,但可以换ranker试试: { ranker: 'network-simplex'  | 'tight-tree' | 'longest-path' } 这是dragre.js内置的三个ranker,@antv/layout也继承了下来

我试过要是尾部节点不汇合可以 但是要汇合的话就不行了

@xingzilong
Copy link
Author

xingzilong commented Apr 25, 2024

请教一下,ranker这个参数是干什么用的?我尝试着更改了一下,没发生什么别的变化

@k644606347
Copy link

k644606347 commented Apr 25, 2024

请教一下,ranker这个参数是干什么用的?我尝试着更改了一下,没发生什么别的变化

@xingzilong 其实就是dagre布局中的三种分层算法,具体可以看下这个:
https://www.yuque.com/antv/g6-blog/xxp5nl#2j2gF
有精力的可以去读最初的论文,也有说到:《A Technique for Drawing Directed Graphs》https://graphviz.org/documentation/TSE93.pdf

@xw-xw12
Copy link

xw-xw12 commented Apr 25, 2024

image
这是我之前在掘金上看到的一个文章 但是我根据他的设置没有实现

@k644606347
Copy link

image 这是我之前在掘金上看到的一个文章 但是我根据他的设置没有实现

@xw-xw12 我也看过这个,也看过dagre源码,说实话看得满痛苦的。。。尤其这个ranker这块,太迷了

@xingzilong
Copy link
Author

请教一下,ranker这个参数是干什么用的?我尝试着更改了一下,没发生什么别的变化

@xingzilong 其实就是dagre布局中的三种分层算法,具体可以看下这个: https://www.yuque.com/antv/g6-blog/xxp5nl#2j2gF 有精力的可以去读最初的论文,也有说到:《A Technique for Drawing Directed Graphs》https://graphviz.org/documentation/TSE93.pdf

感谢解答。
我看了一下语雀的文章,我也尝试更改了一下我的程序(我使用的是@antv/[email protected]),ranker的三个值都测试了,优化后的布局并没有任何区别,按照我(阅读语雀文章)的理解,感觉networks simplex算法可以解决我的问题,但事实是并没有。

@liu-collab
Copy link

image
2 和 3 之间加一根线,这种有啥解决方案

@xingzilong
Copy link
Author

image 2 和 3 之间加一根线,这种有啥解决方案

这个就要看你使用的图元的渲染库是什么了,一般都会提供为两个点之间进行连线的API。
我使用@antv/layout主要是使用布局算法,图元的渲染用的别的库。@antv/layout中关于图元操作的API我不是很了解。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants