Python 节点大小取决于度
我正在尝试将节点大小设置为节点的度数 我的数据集是Python 节点大小取决于度,python,pandas,networkx,Python,Pandas,Networkx,我正在尝试将节点大小设置为节点的度数 我的数据集是 Person1 Age Person2 Wedding 0 Adam John 3 Yao Ming Green 1 Mary Abbey 5 Adam Lebron Green 2 Samuel Bradley 24 Mary Abbey Orange
Person1 Age Person2 Wedding
0 Adam John 3 Yao Ming Green
1 Mary Abbey 5 Adam Lebron Green
2 Samuel Bradley 24 Mary Abbey Orange
3 Lucas Barney 12 Julie Lime Yellow
4 Christopher Rice 0.9 Matt Red Green
我建立网络的代码是
pos=nx.spring_layout(G, k=0.20, iterations=30)
nx.draw_networkx_nodes(G, pos, node_size = degrees, nodelist=collist['value'], node_color=collist['Wedding'])
nx.draw_networkx_edges(G, pos, width = [I['Age'] for i in dict(G.edges).values()])
我试着定义学位如下
degrees=[]
for x in df['Person1']: # all nodes size should depend on the degree, so also for Person2. Maybe this step is wrong
deg=G.degree[x]
degrees.append(deg)
但它似乎不是一个标量
错误是
ValueError: s must be a scalar, or the same size as x and y
编辑:我忘了举一个collist['value']
的例子:
Wedding variable value
0 Green Person1 Adam John
1 Green Person1 Mary Abbey
... ... ... ...
75 Green Person2 Yao Ming
76 Green Person2 Adam Lebron
degrees = [G.degree[node] for node in collist['value']]
假设
G
中的节点是从列Person1
和Person2
中获得的,则df['Person1']
中的“人”数不同于G中的节点总数,或者至少不同于nodelist=collist['value']
中的节点数
一个简单的解决方案是考虑<代码> g < /COD>中的每个节点的程度。基本上你是对的,这一步是错的:
for x in df['Person1']:
您可以将其更改为:
for x in G.nodes():
或使用:
或者,如果您只想在collist['value']
中使用节点:
Wedding variable value
0 Green Person1 Adam John
1 Green Person1 Mary Abbey
... ... ... ...
75 Green Person2 Yao Ming
76 Green Person2 Adam Lebron
degrees = [G.degree[node] for node in collist['value']]
小示例:
G = nx.barabasi_albert_graph(100, 2, seed=42)
degrees = [G.degree[node] for node in G.nodes()]
pos=nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, node_size = degrees)
nx.draw_networkx_edges(G, pos, alpha=0.1)
结果:谢谢你的帮助。然而,我仍然得到相同的错误。我忘了解释
collist['value']
的样子。这可能是问题的原因。请不要使用G.nodes()
trycollist['value']
谢谢。它现在可以正常工作,没有错误。您可以尝试将度乘以某个值:例如:degrees=[1.2*G.degree[node],对于collist['value']]中的节点,
将使节点大小增加20%