Как отобразить сеть с лучшим разделением с помощью пакета Networkx? - PullRequest
0 голосов
/ 03 января 2019

Я создал объект графа, используя пакет pytextrank, например:

import pytextrank
### ........................... 
### Some steps and calculations
### ...........................
graph, ranks = pytextrank.text_rank(path_stage1)

И я могу использовать пакет networkx, чтобы сделать networkx рисунок следующим образом:

import networkx as nx
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(50,50))
nx.draw(graph, with_labels=True) 

plt.show()

enter image description here

Но, как вы можете видеть, слова в основном сосредоточены вокруг центра. Я хотел бы видеть более высокое разделение между классами слов. Как мне это сделать?

1 Ответ

0 голосов
/ 03 января 2019

То, что вы ищете, это другой макет (термин Networkx для алгоритмов позиционирования узлов, которые используются при рисовании графиков). По умолчанию nx.draw() использует макет пружины. Изменить ваш макет можно следующим образом:

import networkx as nx
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(50,50))
pos = nx.spectral_layout(graph)
nx.draw(graph, pos=pos, with_labels=True) 

plt.show()

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

Другой вариант - сохранить график в файл и загрузить его с gephi , который имеет приятный графический интерфейс для визуализации и изучения графика. (Также поддерживается несколько алгоритмов компоновки графа).

...