创建具有相同节点坐标的两个网络

问题描述

我创建了一个网络添加节点和边。我查看它(它会自动创建一个点和 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)

解决方法

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

import React from 'react';
import { Text} from 'react-native';
import SplashScreen from 'react-native-splash-screen';

const App = () => {
 React.useEffect(() => {
    SplashScreen.hide();
 },[]);

 return <Text>Your App</Text>; 
};

export default App;

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

node_positions = nx.layout.spring_layout(G1)
,

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