我想使用一些工具(最好是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)获得网络的可视化效果?
发布于 2019-01-09 11:07:25
你应该调查一下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')

https://stackoverflow.com/questions/54102594
复制相似问题