【发布时间】:2019-06-04 18:26:22
【问题描述】:
我想用节点和边可视化社交网络,节点的颜色代表属性值。如果我可以使用 python 中的工具(如networkx)来实现,那就太好了,但我也对其他工具持开放态度(如Gephi,graph-tools)。我在社交网络中拥有的节点和边采用 numpy 数组的形式。我希望这个可视化的节点根据属性值着色。
节点数组中的每一行都指向一个用户。节点数组中的每一列都指向一个属性。节点数组的每一列中的值都指向属性值。下面是一个包含 10 个用户和 3 个属性的节点数组示例(名称为 [Att1、Att2、Att3]。
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]])
同样,边数组(邻接矩阵)是一个大小为节点数* 节点数的方阵。邻接矩阵中的值为 1 表示两个节点之间存在边,值为 0 表示不存在边。这是边数组的示例。
Edges = np.random.randint(2, size=(10,10))
假设我希望节点根据Nodes 中间列中给出的属性值着色(即Attribute_Value = Nodes[:,1] = [2, 3, 2, 1, 2, 1, 2, 0, 2, 0]) 有四个唯一的属性值[0,1,2,3] 所以,我希望有四种不同的颜色节点。在我的实际图表中,我有更多唯一的属性值。此外,我有数以万计的节点,所以我希望能够在我的图中调整节点的大小(半径)。
在我之前的帖子之后,我尝试了这个:
import networkx as nx
G = nx.from_numpy_array(Edges)
nx.draw(G, with_labels=True)
但是,上述代码 sn-p 的结果不允许我根据属性值选择颜色。另外,我需要调整节点的大小。如何以所述方式可视化社交图?
【问题讨论】:
标签: python graph networkx gephi social-graph