Ошибки при рисовании больших графиков в Networkx - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь визуализировать двудольный граф, имеющий всего около 300 000 узлов.Я использую свою вспомогательную функцию ниже.

def plot_network(G):
   pos = nx.spring_layout(G) 
   plt.figure(figsize=(10,10)) 
   nx.draw_networkx(G, pos, iterations=20, node_grouping='bipartite', 
   with_labels=False, node_size = 5)

plot_network(G)

Когда я пытаюсь визуализировать график полностью, в ячейке IPython появляются следующие ошибки, и процесс просто зависает там навсегда:

C:\Users\user\AppData\Roaming\Python\Python36\site-packages\networkx\drawing\layout.py:499: RuntimeWarning:

invalid value encountered in sqrt

Я пытался визуализировать меньшие графики, используя случайные выборки моих данных, и это работало ... пока выборки не превысили 9000 узлов.

Я не уверен, как интерпретировать ошибку.получить, но кажется, что размер графика является фактором.Итак, есть ли ограничение на размер графиков, которые я могу визуализировать в Networkx?Есть ли в любом случае я могу обойти это?

Ответы [ 2 ]

0 голосов
/ 26 июля 2018

В дополнение к ответам Bubble Bubble попробуйте использовать более простой алгоритм компоновки.Первоначально я нажимал на эту ошибку, используя spring_layout, но я нашел круговые работы.

fig, axs = plt.subplots(1,1, figsize=(25,25))

# Define node positions using layout algo
# pos = nx.spring_layout(G, center=(1,1), k=40, iterations=5) # returns error
pos = nx.circular_layout(G)

# draw
nx.draw(G,axis=axs, pos=pos, node_size=1)
0 голосов
/ 30 мая 2018

Кажется, что Networkx просто не смог выделить достаточно места для всех узлов, попробуйте сначала увеличить figsize или уменьшить node_size.Если ни один из этих способов не работает, попробуйте обновить пакет networkx с pip install networkx --upgrade, так как кажется, что вы не используете последнюю версию networkx.

...