从节点和边数组可视化社交网络

时间:2019-01-09 02:45:38

标签: python python-2.7 graph social-graph

我想使用某种工具(最好是python中的某种工具)可视化社交网络。目前,我的数据以数组的形式出现:一个包含有关节点信息的数组(我们给它起名为Nodes)。该数组的每一行都指向一个节点,而该数组的每一列都指向一个特定的属性。 Nodes每一列中的值表示属性值。 Nodes数组中的零值代表缺少的属性值。

在节点数组旁边,我有一个用于邻接矩阵(边)的数组。我们将此数组称为EdgesEdges数组是一个正方形数组,其大小与Nodes数组中的行数(节点)相同。此数组(Edges)填充有01作为值。在0的{​​{1}}位置上的(i,j)值表示节点Edgesi没有相互连接。而在j位置的1值表示节点(m,n)m相互连接。

这是一个包含10个节点的数组nNodes的小说明性示例:

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)获得网络的可视化?

1 个答案:

答案 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')

enter image description here