如何在操作图形后获得新的边列表
How to get new edgelists after manipulating graphs
有什么方法可以使用来自网络的数据创建数据框吗?
例如,如果我从边列表构建一个图
G = nx.from_pandas_edgelist(df, 'Col1', 'Col2')
然后我对网络进行了一些操作(例如,删除节点或计算所有三角形),
我画了它
G1 = nx.triangles(G)
nx.draw(G1, with_labels=True)
是否可以提取我正在绘制的新数据?怎么样?
尝试G.subgraph(list_of_node_indices).copy()
。在 nx.triangles
的情况下,它将 return 一个以节点名称为键的字典。您可以做的是提取具有零值的键(假设您要过滤包含至少一个三角形的所有节点)。
例子
G = nx.Graph()
G.add_edge(1,2)
G.add_edge(2,3)
G.add_edge(3,4)
G.add_edge(4,2)
G.add_edge(4,1)
G.add_edge(5,1)
G.add_edge(6,1)
G.add_edge(6,7)
G.add_edge(7,8)
G1 = G.subgraph([ i[0] for i in nx.triangles(G).items() if not i[1]]).copy()
nx.draw(G)
print(nx.triangles(G))
{1: 1, 2: 2, 3: 1, 4: 2, 5: 0, 6: 0, 7: 0, 8: 0}
#only node 6,7,8 is included
print(nx.to_pandas_edgelist(G1))
source target
0 6 7
1 7 8
有什么方法可以使用来自网络的数据创建数据框吗?
例如,如果我从边列表构建一个图
G = nx.from_pandas_edgelist(df, 'Col1', 'Col2')
然后我对网络进行了一些操作(例如,删除节点或计算所有三角形), 我画了它
G1 = nx.triangles(G)
nx.draw(G1, with_labels=True)
是否可以提取我正在绘制的新数据?怎么样?
尝试G.subgraph(list_of_node_indices).copy()
。在 nx.triangles
的情况下,它将 return 一个以节点名称为键的字典。您可以做的是提取具有零值的键(假设您要过滤包含至少一个三角形的所有节点)。
例子
G = nx.Graph()
G.add_edge(1,2)
G.add_edge(2,3)
G.add_edge(3,4)
G.add_edge(4,2)
G.add_edge(4,1)
G.add_edge(5,1)
G.add_edge(6,1)
G.add_edge(6,7)
G.add_edge(7,8)
G1 = G.subgraph([ i[0] for i in nx.triangles(G).items() if not i[1]]).copy()
nx.draw(G)
print(nx.triangles(G))
{1: 1, 2: 2, 3: 1, 4: 2, 5: 0, 6: 0, 7: 0, 8: 0}
#only node 6,7,8 is included
print(nx.to_pandas_edgelist(G1))
source target
0 6 7
1 7 8