我想使用某种工具(最好是python中的某种工具)可视化社交网络。目前,我的数据以数组的形式出现:一个包含有关节点信息的数组(我们给它起名为Nodes
)。该数组的每一行都指向一个节点,而该数组的每一列都指向一个特定的属性。 Nodes
每一列中的值表示属性值。 Nodes
数组中的零值代表缺少的属性值。
在节点数组旁边,我有一个用于邻接矩阵(边)的数组。我们将此数组称为Edges
。 Edges
数组是一个正方形数组,其大小与Nodes
数组中的行数(节点)相同。此数组(Edges
)填充有0
和1
作为值。在0
的{{1}}位置上的(i,j)
值表示节点Edges
和i
没有相互连接。而在j
位置的1
值表示节点(m,n)
和m
相互连接。
这是一个包含10个节点的数组n
和Nodes
的小说明性示例:
Edges
在上面给出的数据中,我们有10个节点和3个属性。如何使用这些数组(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))
和Nodes
)获得网络的可视化?
答案 0 :(得分:1)
您应该查看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')