Визуализация социальной сети из узлов и ребер массивов - PullRequest
0 голосов
/ 09 января 2019

Я хочу визуализировать социальные сети, используя какой-то инструмент (предпочтительно какой-нибудь инструмент в python). В настоящее время у меня есть данные в виде массивов: массив с информацией об узлах (давайте назовем его Nodes). Каждая строка этого массива указывает на узел, а каждый столбец этого массива указывает на определенный атрибут. Значения в каждом столбце Nodes отображают значения атрибутов. Нулевые значения в этом массиве Nodes представляют отсутствующие значения атрибута.

Рядом с массивом узлов у меня есть массив для матрицы смежности (ребер). Давайте назовем этот массив Edges. Массив Edges представляет собой квадратный массив того же размера, что и количество строк (узлов) в массиве Nodes. Этот массив (Edges) заполнен значениями 0 и 1. Значение 0 в (i,j) положении Edges будет означать, что узлы i и j не связаны друг с другом. Принимая во внимание, что значение 1 в положении (m,n) будет означать, что узлы m и n связаны друг с другом.

Вот небольшой иллюстративный пример массивов Nodes и Edges с 10 узлами:

Nodes = np.array([[1,2,4],[1,3,1],[2,2,1],[1,1,2],
              [1,2,2],[2,1,4],[1,2,1],[2,0,1],
              [2,2,4],[1,0,4]])

Edges = np.random.randint(2, size=(10,10))

В приведенных выше данных у нас есть 10 узлов и 3 атрибута. Как я могу получить визуализацию сети, используя эти массивы (Nodes и Edges)?

1 Ответ

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

Вы должны посмотреть на networkx . Чтобы создать свой график непосредственно из матрицы смежности, вы можете использовать функцию from_numpy_array.

import networkx as nx

adj = np.random.randint(2, size=(10,10))
G = nx.from_numpy_array(adj)

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

Визуализация это также опция:

nx.draw(G, with_labels=True, font_weight='bold')

enter image description here

...