Я хочу визуализировать социальную сеть с узлами и ребрами, с цветами узлов, представляющими значения атрибутов . Было бы хорошо, если бы я мог сделать это с помощью инструментов в Python (например, networkx ), но я также открыт для других инструментов (таких как Gephi , graph-tools ) Узлы и ребра, которые у меня есть в моей социальной сети, имеют форму массивов. Я хочу, чтобы узлы этой визуализации были окрашены в соответствии со значениями атрибутов.
Каждая строка в массиве узлов указывает на пользователя. Каждый столбец в массиве узлов указывает на атрибут. Значения в каждом столбце массива узлов указывают на значения атрибутов. Вот пример массива узлов с 10 пользователями и 3 атрибутами (с именами [Att1
, Att2
, Att3
].
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]])
Аналогично, массив ребер (матрица смежности) - это квадратный массив с размером число узлов *
количество узлов. Значение 1 в матрице смежности указывает на наличие ребра между двумя узлами, а значение 0 указывает на отсутствие ребра. Вот пример массива ребер.
Edges = np.random.randint(2, size=(10,10))
Допустим, я хочу, чтобы узлы были окрашены в соответствии со значениями атрибутов, приведенными в среднем столбце Nodes
(т. Е. Attribute_Value = Nodes[:,1] = [2, 3, 2, 1, 2, 1, 2, 0, 2, 0])
. Существует четыре уникальных значения атрибутов [0,1,2,3]
, поэтому я хотел бы иметь четыре разных цвета для узлы. В моем реальном графике у меня есть еще много уникальных значений для атрибутов. Кроме того, у меня есть десятки тысяч узлов, поэтому я хотел бы иметь возможность регулировать размеры (радиусы) узлов в моем графике.
После моего предыдущего поста я попробовал это:
import networkx as nx
G = nx.from_numpy_array(Edges)
nx.draw(G, with_labels=True)
Но результаты приведенного выше фрагмента кода не позволяют мне выбирать цвета в соответствии со значениями атрибута. Также мне нужно будет настроить размеры узлов. Как я могу визуализировать социальные графики описанным способом?