Python Graphviz:如何插入两个新的链接节点并最小化边交叉?

Python Graphviz:如何插入两个新的链接节点并最小化边交叉?,python,graph-theory,graphviz,pygraphviz,Python,Graph Theory,Graphviz,Pygraphviz,我有以下图表: 正如你所看到的,有两个自然集群。我想找出一种方法,将这些集群分成两个图 当然,关键的一步是计算正确的分割。我想插入两个节点n1和n2,将它们链接到e(n1,n2),并将它们四处移动,以最小化交叉边的数量(当然,将所有节点/边精确固定在它们所在的位置) 这里有人能帮忙吗?我不认为graphviz有任何东西能让我做到这一点。我认为你在这里混合了两个不同的任务:一个是分析图形,另一个是可视化 顾名思义,Graphviz是一种图形可视化工具。可视化可以采取多种形式,通常是通过使这些节点彼

我有以下图表:

正如你所看到的,有两个自然集群。我想找出一种方法,将这些集群分成两个图

当然,关键的一步是计算正确的分割。我想插入两个节点n1和n2,将它们链接到e(n1,n2),并将它们四处移动,以最小化交叉边的数量(当然,将所有节点/边精确固定在它们所在的位置)


这里有人能帮忙吗?我不认为graphviz有任何东西能让我做到这一点。

我认为你在这里混合了两个不同的任务:一个是分析图形,另一个是可视化

顾名思义,Graphviz是一种图形可视化工具。可视化可以采取多种形式,通常是通过使这些节点彼此靠近并连接,从而减少可视边长度,从而“使其看起来很好”。可以利用一些弹簧或重力模型来计算所有节点的最佳位置。其他选项包括圆形或外壳布局

某种可视化不应成为分析图形的基础。图形属性,如平均最短路径长度或聚类系数,与任何可视化无关

你说你想“最小化交叉口的数量”。交叉边的数量是可视化的属性,而不是图形的属性!每次让graphviz计算布局时,它可能都会更改,即使图形没有更改。谁说2d是图形的唯一可能表示形式?只添加一个维度,就不会有任何交叉边


我建议你专注于图表分析。我不知道你是否知道。他们有几十种方法来分析你的图表。也许集群和集团部分是您感兴趣的。

+1只是为了给人留下深刻印象:)1。获取88个国家的透明国际数据;2.创建国家之间的距离矩阵;创建完整的图形。3.一个星球,两个不同的世界。只是要澄清一下……你是否已经知道图形的聚类,你的问题是如何让graphviz更清晰地布局图形,或者你的第一个问题是(算法上)找到集群,然后假设graphviz将产生一个更干净的布局?我想自动化这些集群的发现,并递归地查看每个集群的内部。问题是graphviz并没有为我提供一种窥视加权边交叉点的方法。我读了好几遍你的问题,但我不明白你在寻找什么:你想要两个单独的图吗?还是一个有两个簇的图?为什么要创建新节点?如果您正在将节点/边固定到它们现在所在的位置,那么应该更改什么?