0

我想使用一些工具(最好是 python 中的一些工具)来可视化社交网络。目前,我有数组形式的数据:一个包含节点信息的数组(让我们给它命名Nodes)。这个数组的每一行都指向一个节点,而这个数组的每一列都指向一个特定的属性。Nodes描述属性值的每一列中的值。此数组中的零值Nodes代表缺失的属性值。

除了节点数组,我还有一个用于邻接矩阵(边)的数组。我们称之为数组Edges。该Edges数组是一个与数组中的行数(节点)相同大小的Nodes方阵。这个数组 ( Edges) 用01作为值填充。0in (i,j)position of的值Edges意味着节点ij不相互连接。而1in (m,n)position 的值则意味着节点m彼此n连接。

这是一个带有 10 个节点的数组Nodes的小说明性示例:Edges

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 个属性。如何使用这些数组 (NodesEdges) 获得网络的可视化?

4

1 回答 1

2

您应该查看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')

在此处输入图像描述

于 2019-01-09T03:07:25.327 回答