networkx 点的属性_在节点外部标记networkx节点属性

博客讨论了如何在使用networkx库绘制图时,将节点属性(如类型)以字典形式显示在节点外部,同时保留节点名称。示例代码展示了创建一个包含'machine'和'human'节点类型的图,以及尝试使用nx.get_node_attributes()和nx.draw_networkx_labels()的问题,这两个函数会替换节点名称。博主寻求解决方案以在不覆盖节点名的情况下,显示节点的'type'属性。
摘要由CSDN通过智能技术生成

我正在处理一个属于两种类型{'human', 'machine'}的小示例节点集,我希望在networkx图中每个节点之外以字典形式标记节点属性,例如下图中节点c、e、j中显示的那些属性。(我使用MS Word在图表上添加字典类型属性。)

底图使用以下代码生成:import networkx as nx

G = nx.Graph()

G.add_nodes_from(['a', 'b', 'c', 'd', 'e', 'f', 'g'], type = 'machine')

G.add_nodes_from(['h', 'i', 'j'], type = 'human')

G.add_edges_from([('a', 'c'), ('a', 'b'), ('a', 'd'), ('a', 'f'), ('b', 'd'), ('b', 'e'), ('b', 'g'), ('c', 'f'), ('c', 'd'), ('d', 'f'), ('d', 'e'), ('d', 'g'), ('e', 'g'), ('f', 'g'), ('f', 'h'), ('g', 'h'), ('h', 'i'), ('i', 'j')])

def plot_graph(G, weight_name=None):

import matplotlib.pyplot as plt

plt.figure()

pos = nx.spring_layout(G)

edges = G.edges()

weights = None

if weight_name:

weights = [int(G[u][v][weight_name]) for u,v in edges]

labels = nx.get_edge_attributes(G,weight_name)

nx.draw_networkx_edge_labels(G,pos,edge_labels=labels)

nx.draw_networkx(G, pos, edges=edges, width=weights);

else:

nx.draw_networkx(G, pos, edges=edges);

plot_graph(G, weight_name=None)

plt.savefig('example.png')

plt.show()

但问题是

nx.get_node_attributes()和nx.draw_networkx_labels()函数将不包括标签上的字典键(在本例中为'type')(这仅适用于nx.get_edge_属性()和nx.draw_networkx_edge_标签()),如果要使用nx.get_node_attributes()和nx.draw_networkx_labels(),则原始节点名将被属性值替换。在

我想知道是否有其他方法可以在每个节点外部以字典格式标记属性,同时将节点名称保留在节点内部?我应该如何修改我的当前代码?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值