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