从节点和边缘数组可视化社交网络
Visualization of social network from nodes and edges arrays
我想使用某种工具(最好是 python 中的某种工具)可视化社交网络。目前,我的数据是数组形式的:一个包含节点信息的数组(我们将其命名为 Nodes
)。该数组的每一行都指向一个节点,而该数组的每一列都指向一个特定的属性。 Nodes
的每一列中的值描述了属性值。此 Nodes
数组中的零值表示缺少属性值。
除了节点数组,我还有一个邻接矩阵(边)数组。我们称这个数组为 Edges
。 Edges
数组是一个方形数组,其大小与 Nodes
数组中的行数(节点)相同。这个数组 (Edges
) 填充了 0
和 1
作为值。 Edges
的 (i,j)
位置的值 0
意味着节点 i
和 j
没有相互连接。而 (m,n)
位置的 1
值意味着节点 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个属性。如何使用这些数组(Nodes
和 Edges
)获得网络的可视化效果?
你应该调查一下 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')
我想使用某种工具(最好是 python 中的某种工具)可视化社交网络。目前,我的数据是数组形式的:一个包含节点信息的数组(我们将其命名为 Nodes
)。该数组的每一行都指向一个节点,而该数组的每一列都指向一个特定的属性。 Nodes
的每一列中的值描述了属性值。此 Nodes
数组中的零值表示缺少属性值。
除了节点数组,我还有一个邻接矩阵(边)数组。我们称这个数组为 Edges
。 Edges
数组是一个方形数组,其大小与 Nodes
数组中的行数(节点)相同。这个数组 (Edges
) 填充了 0
和 1
作为值。 Edges
的 (i,j)
位置的值 0
意味着节点 i
和 j
没有相互连接。而 (m,n)
位置的 1
值意味着节点 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个属性。如何使用这些数组(Nodes
和 Edges
)获得网络的可视化效果?
你应该调查一下 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')