我试图在NetworkX中创建一个基于defeaultdict的网络图,它包含节点和边。当我尝试添加边时,会收到以下错误消息:
add_edge()缺少1个必需的位置参数:“v_of_edge”
我的代码如下:

graph = { "a" : ["c"],
      "b" : ["c", "e"],
      "c" : ["a", "b", "d", "e"],
      "d" : ["c"],
      "e" : ["c", "b"],
      "f" : []
    }

G = nx.Graph()

for k,v in graph.items():

    G.add_node(k)
    G.add_edge(*v)
nx.draw()
plt.show()

我知道add_edge接受(u,v)参数,我假设u是节点,v是边,所以我尝试:
G.add_edge(k,v)

但这导致了一条新的错误消息:
不可更改类型:“list”
我不知道该怎么做,但至少留给我一个问题。
在第二种方法中,我应该以某种方式单独访问给定节点的每个边缘吗?

最佳答案

代码中的问题是v是图形结构定义中的列表。以下代码将使其工作:

graph = { "a" : ["c"],
      "b" : ["c", "e"],
      "c" : ["a", "b", "d", "e"],
      "d" : ["c"],
      "e" : ["c", "b"],
      "f" : []
    }

G = nx.Graph()

for k,v in graph.items():
    for vv in v:
        G.add_edge(k,vv)
nx.draw(G)
plt.show()

根据您的定义,应该循环遍历与每个节点关联的列表来定义边。
python - 将边线添加到网络图时出错:'v_of_edge'-LMLPHP

09-25 22:55