删除节点时是否可以在networkX中对图形进行动画处理?

时间:2019-10-25 14:13:49

标签: python graph nodes networkx

我有一个大约200个节点组成的图,每次迭代都从中删除其中的节点。 可以在移除节点的情况下可视化图,但是这样做时节点的位置不会改变。理想情况下,我想带走节点,看看剩余的节点是否彼此靠近,以及随着越来越多的节点被移除而形成簇。

我正在为此使用networkX。我试图在每次迭代时重新计算图,但是图的创建方式似乎有些随机性。因此,每次迭代都会得到一个非常不同的图。

有没有办法实现我想要的?

1 个答案:

答案 0 :(得分:1)

您可以使用draw_networkx

import networkx as nx
import matplotlib.pyplot as plt

nodes = [i for i in range(10)]
edges = [(i, i+1) for i in range(5)]
G = nx.Graph()
G.add_nodes_from(nodes)
G.add_edges_from(edges)

positions = {}

for node in nodes:
    positions[node] = (node, node)

nx.draw_networkx(G, pos=positions)

我生成了10个带有一些边缘的节点的图形,然后定义一个dict,其中键是节点(此处为1到10),值是(x,y)格式的坐标。在此示例中,我沿着一条线排列了节点。
然后,在下一次迭代中,只需删除不需要的节点并传递相同的命令即可。它将跳过缺少的节点,仅绘制图中仍然存在的节点:

G.remove_nodes_from([5,6])
nx.draw_networkx(G, pos=positions)

您应该看到节点5和6丢失。 .draw_networkx依赖于matplotlib,因此您可以执行该库允许的许多操作。更多信息here

希望有帮助!