gpt4 book ai didi

graph - 可视化具有大约 500 个节点的二分图

转载 作者:行者123 更新时间:2023-12-04 14:36:11 25 4
gpt4 key购买 nike

我需要画一个二分图。它有大约 500 个节点。

目前我正在尝试使用 graphviz 来完成它。该图有两种类型的节点。我希望第一种类型位于左侧,另一个节点位于图的右侧。如果我用 dot 做简单的绘图,那么它就是两行节点的细条。这些行彼此靠得太近,因此很难识别节点之间的任何单独边缘。我尝试了其他布局算法,例如 circo。我喜欢节点在一个圆上,但我不知道如何拆分左右半圆上的节点。

接下来是我想要的完美输出:节点沿着一个圆展开,但两种类型的节点属于不同的半圆。我有办法使用图形可视化来做到这一点吗?

如果在 graphviz 中做起来太难,您会推荐一个更好的工具吗?

最佳答案

您可以使用 ranksep 属性增加 dot 中的行间距。为了将图的两半分开,创建两个具有固定位置的隐藏节点 (style=invis),然后连接(使用 style=invis 边)可能是有意义的每个“真实”节点到图的一半的固定节点。您可能希望为此使用 neato,可能将 overlap=false 作为图形属性。这是一个简单的示例(使用不可见样式来显示布局的外观):

graph test {
overlap=false; splines=true
edge [style=dotted, weight=10, len=.2]
subgraph cluster_left {
left [pos="-1,0!", color=red /* , style=invis */]
a -- left
b -- left
}
subgraph cluster_right {
right [pos="1,0!", color=blue /* , style=invis */]
c -- right
d -- right
e -- right
}
edge [style="", weight=1, len=1]
a -- b
b -- d
d -- e
c -- e
b -- e
}

对于半圆,在第一个 edge 行中设置 weight=1000, len=1 并使用 fdp 而不是 neato 似乎产生了一些接近的东西(仍然有一些节点的边长略有偏差)。您需要更多节点才能看到效果(我放入了额外的节点,例如 be 但在它们的名称上带有数字后缀以进行测试)。

关于graph - 可视化具有大约 500 个节点的二分图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19847063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com