为networkx中的节点指定了错误的颜色

2024-05-14 09:48:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在网络中绘制正确的颜色时遇到困难。 这是我的数据集,其中用户是节点,值是链接到的用户

    User        Val     Color   
92  Laura   NaN      red
100 Laura   John    red
148 Laura   Mike    red
168 Laura   Mirk    red
293 Laura   Sara     red
313 Laura   Sim  red
440 Martyn  Pierre   orange
440 Martyn  Hugh    orange
440 Martyn  Lauren  orange
440 Martyn  Sim     orange

我正在使用以下代码:

G = nx.from_pandas_edgelist(df, 'User', 'Val')
labels = [i for i in dict(G.nodes).keys()]
labels = {i:i for i in dict(G.nodes).keys()}
colors = df[["User", "Color"]].drop_duplicates()["Color"]

plt.figure(3,figsize=(30,50)) 
pos = nx.spring_layout(G) 
nx.draw(G, node_color = colors, pos = pos)
net = nx.draw_networkx_labels(G, pos = pos)

我尝试将颜色列中的颜色分配给用户。我的预期产出是:

劳拉(诺德)穿红色,马丁(诺德)穿橙色,其他人(约翰、迈克、米尔克……)穿绿色


Tags: 用户posdfforlabels颜色valred
1条回答
网友
1楼 · 发布于 2024-05-14 09:48:50

颜色本身并没有错。您只是尝试为每对节点分配一种颜色,这很可能是边的着色。在这种情况下,您需要将node_color关键字替换为edge_color

G = nx.from_pandas_edgelist(df, 'User', 'Val')
colors = df[["User", "Color"]].drop_duplicates()["Color"]

plt.figure(figsize=(3, 3))
pos = nx.spring_layout(G)
nx.draw(G, edge_color = colors, pos = pos)
net = nx.draw_networkx_labels(G, pos = pos)
plt.show()

这是df我的工作对象:

t = '''
User        Val     Color   
92  Laura   NaN      red
100 Laura   John    red
148 Laura   Mike    red
168 Laura   Mirk    red
293 Laura   Sara     red
313 Laura   Sim  red
440 Martyn  Pierre   orange
440 Martyn  Hugh    orange
440 Martyn  Lauren  orange
440 Martyn  Sim     orange'''
from io import StringIO
df = pd.read_csv(StringIO(t), sep='\s+')

输出

enter image description here

相关问题 更多 >

    热门问题