gpt4 book ai didi

python - 在 Python 中建立无向图模型

转载 作者:行者123 更新时间:2023-11-30 22:57:46 29 4
gpt4 key购买 nike

我尝试用networkX绘制“网络图”,但是told ,这个库并不是为了我想要使用它的目的而设计的。

总结上面链接的失败问题,我从要绘制的数据开始,然后继续处理实际问题:

graph = {
'1': ['2', '3', '4'],
'2': ['5','11','12','13','14','15'],
'3' : ['6','7','66','77'],
'5': ['6', '8','66','77'],
'4': ['7','66','77'],
'7': ['9', '10']
}

将此数据视为 defaultdict(list),最左边的部分是键,右侧的列表是该键的值列表。我想要实现的是绘制一个图,类似于网络图here :边越多,节点越大,标注节点等

但是,不同之处在于我想要将键与相应的值(1 与 2、1 与 3、1 与 4)连接,但不是键彼此连接(>不是 1 与 2 与 3 与 5 与 4 与 7)。

将数据想象为服务器和客户端。键是服务器,值是客户端。服务器( key )不直接相互连接,它们仅共享(有时)相同的客户端。在上面的示例中,服务器 3 和服务器 5 都连接到客户端 6、66 和 77。这也是客户端(值)不应相互连接的原因。

我希望能够清楚地表达我的问题^^

谢谢!

最佳答案

问题是您尝试对服务器和客户端使用相同的 ID。 NetworkX 无法知道 2 是指客户端(应该连接)还是服务器(不应该连接)。要执行此处描述的操作,您只需为服务器创建一个唯一的 ID。例如:

import networkx

graph = {
'1': ['2', '3', '4'],
'2': ['5','11','12','13','14','15'],
'3': ['6','7','66','77'],
'5': ['6', '8','66','77'],
'4': ['7','66','77'],
'7': ['9', '10']
}

g = networkx.Graph()

for k, vs in graph.items():
server_id = 'server_%s' % k

for v in vs:
g.add_edge(server_id,v)

networkx.draw_spring(g)

这会产生以下输出:

NetworkX plot

要通过边数更改节点的大小,您需要计算大小并将其传递给 draw_spring。要获取特定节点的边数,您可以调用 g.edges(node) 例如

node_sizes = [150*len(g.edges(n)) for n in g.nodes()]
networkx.draw_spring(g, node_size=node_sizes)

这应该给你以下内容:

enter image description here

关于python - 在 Python 中建立无向图模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36472805/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com