Можно ли анимировать граф в сети X при удалении узлов? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть график, состоящий примерно из 200 узлов, из которых я удаляю узлы на каждой итерации. Можно визуализировать график с удаленными узлами, но при этом расположение узлов не меняется. В идеале я хотел бы убрать узлы и посмотреть, не сближаются ли остальные узлы и образуются ли кластеры, когда удаляется все больше и больше узлов.

Я использую для этого networkX. Я пытался пересчитать график на каждой итерации, но, кажется, есть некоторая случайность в том, как создается граф. Поэтому я получаю совершенно разные графики для каждой итерации.

Есть ли способ достичь того, чего я хочу?

1 Ответ

1 голос
/ 25 октября 2019

Вы можете использовать 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, так что вы можете делать многие вещи, разрешенные этой библиотекой. Подробнее здесь .

Надеюсь, это поможет!

...