使用数据框中的信息自定义边和节点的设置
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()])
输出:
目前我已经使用来自源-目标数据帧的 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()])
输出: