首页 > 解决方案 > 使用 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 示例中显示的随机网络。任何帮助表示赞赏。

标签: pythonplotlynetworkx

解决方案


我从这个网址得到了答案:networkx add_node with specific position。感谢@TomRon。这个想法是分别定义每个节点并添加下面的指令以获取位置并将其与 plotly 一起使用

pos=nx.get_node_attributes(G,'pos')

推荐阅读