【问题标题】:Creation of two networks with the same node coordinates创建具有相同节点坐标的两个网络
【发布时间】:2021-09-04 06:30:59
【问题描述】:

我创建了一个网络添加节点和边。我查看它(它会自动创建一个点和 pdf 文件)。稍后,我想创建第二个具有相同节点但不同边缘的网络。我想将节点放置在相同的坐标中,以便我可以轻松地比较两个图。我试图获取第一个图的坐标,并尝试设置节点的坐标)但我找不到合适的函数来做到这一点。我还检查了 networkx 包。我还尝试获取第一个网络的副本,并删除边缘但没有成功。有人可以告诉我如何创建具有相同节点坐标的第二个网络吗?

这是简单的网络创建代码

import graphviz as G
  network1 = G.Digraph(
        graph_attr={...},
        node_attr={...},
        edge_attr={...} )

 network.node("xxx")
 network.node("yyy")
 network.node("zzz")
 network.edge("xxx", "yyy")
 network.edge("yyy", "zzz")
 network1.view(file_name)

【问题讨论】:

    标签: networkx graphviz pygraphviz


    【解决方案1】:

    Graphviz 的图层功能可能也很有趣:
    https://graphviz.org/faq/#FaqOverlays
    这是一个使用图层的工作示例 - 忽略创建视频的最后两行。
    https://forum.graphviz.org/t/stupid-dot-tricks-2-making-a-video/109
    这里还有一些背景:
    https://forum.graphviz.org/t/getting-layers-to-work-with-svg/107

    【讨论】:

      【解决方案2】:

      首先,使用您选择的布局(例如弹簧布局)计算第一个图形的节点位置:

      node_positions = nx.layout.spring_layout(G1)
      

      现在,您可以绘制此图以及在相同位置具有相同节点的任何其他图:

      nx.draw(G1, with_labels=True, pos=node_positions)
      nx.draw(G2, with_labels=True, pos=node_positions)
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      • 2014-08-05
      • 2012-01-14
      • 2018-07-08
      • 1970-01-01
      相关资源
      最近更新 更多