python - 使用 Networkx 和 plotly 绘制特定图形
问题描述
我是 networkx 的新手,我想用 Networkx 和 plotly 绘制一个定义的图形。该图定义如下:
pos = {0: (20, 10), 1: (20, 20), 2: (30, 10), 3: (30, 20), 4: (50, 15)}
X=nx.Graph()
Gr.add_nodes_from(pos.keys())
Gr.add_edge(0,3)
Gr.add_edge(0,2)
Gr.add_edge(1,2)
Gr.add_edge(3,4)
为了使节点可点击,如 plotly 教程(https://plotly.com/python/network-graphs/)所示,我使用了那里编写的代码。问题是当我运行下面的代码时:
for node in Gr.nodes():
x, y = Gr.nodes[node]['pos']
node_x.append(x)
node_y.append(y)
它向我显示了错误:
<ipython-input-38-a80b1db2d250> in <module>
2 node_y = []
3 for node in Gr.nodes():
----> 4 x, y = Gr.nodes[node]['pos']
5 node_x.append(x)
6 node_y.append(y)
KeyError: 'pos'
边缘也会发生同样的事情。我不知道该怎么做,因为我知道这段代码适用于上面 url 示例中显示的随机网络。任何帮助表示赞赏。
解决方案
我从这个网址得到了答案:networkx add_node with specific position。感谢@TomRon。这个想法是分别定义每个节点并添加下面的指令以获取位置并将其与 plotly 一起使用
pos=nx.get_node_attributes(G,'pos')