如何创建一个中心节点代表共享 objects 的网络?

How to create a network were central nodes represent shared objects?

我想创建一个包含两种类型节点的网络:所有者节点和共享节点 objects。 这是一个玩具示例,假设 3 children :汤姆、萨姆和玛丽分享 3 个馅饼。

Name Pie Share
Tom Chocolate 0.5
Tom Apple 0.1
Tom Pear 0.4
Sam Chocolate 0.3
Sam Apple 0.8
Sam Pear 0.4
Mary Chocolate 0.2
Mary Apple 0.1
Mary Pear 0.2

我想使用 Python 中的 Network X 库来创建所需的输出:

边的大小由 child 每个人拥有的馅饼份额加权。

这称为二分网络,您可以像创建常规网络一样创建它。

import networkx as nx

G = nx.DiGraph()

G.add_node('Tom')
G.add_node('Sam')
G.add_node('Mary')

G.add_node('Chocolate')
G.add_node('Apple')
G.add_node('Pear')

G.add_edge('Tom','Chocolate',weight=0.5)
G.add_edge('Tom','Apple',weight=0.1)
...

你画的是定向链接,所以我用了一个DiGraph,如果你不在意方向,那么你可以用一个普通的Graph。它是二分的这一事实意味着您可以将整个网络分成两组不共享任何边的节点。