使用数据框中的信息自定义边和节点的设置

Customise settings for edges and nodes using info from a dataframe

目前我已经使用来自源-目标数据帧的 NetworkX 构建了一个网络:

import networkx as nx

G = nx.from_pandas_edgelist(df, source='Person1', target='Person2')

数据集

    Person1            Age       Person2         Wedding
0   Adam John          3        Yao Ming         Green
1   Mary Abbey         5       Adam Lebron       Green
2   Samuel Bradley     24      Mary Lane         Orange
3   Lucas Barney       12      Julie Lime        Yellow
4   Christopher Rice   0.9     Matt Red          Green

我想根据 Age 列(即结婚年龄)和 Wedding 列中的节点颜色设置链接的 size/weights。 我知道,如果我想添加一条边,我可以按如下方式设置它:G.add_edge(Person1,Person2, size = 10);为了将不同的颜色应用于节点,我可能应该使用参数 node_color=color_map,其中 color_map 应该是 Wedding 列中的颜色列表(如果我是对的)。

你能解释一下如何将这些设置应用到我的案例中吗?

IIUC:

df = pd.read_clipboard(sep='\s\s+')

collist = df.drop('Age', axis=1).melt('Wedding')
collist

G = nx.from_pandas_edgelist(df, source='Person1', target='Person2', edge_attr='Age')

pos=nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, nodelist=collist['value'], node_color=collist['Wedding'])
nx.draw_networkx_edges(G, pos, width = [i['Age'] for i in dict(G.edges).values()])

输出: