创建确定的边和节点的图形
Posted
技术标签:
【中文标题】创建确定的边和节点的图形【英文标题】:Creating graph of determined edges and nodes 【发布时间】:2020-04-02 13:58:45 【问题描述】:我想创建一个显示连接节点和边的图表。我已经确定了节点和边。
import matplotlib.pyplot as plt
import networkx as nx
%matplotlib notebook
G = nx.Graph()
G.add_node(y[i]==1, color="blue", size=500)
G.add_node(y[i]==0, color="green", size=300)
G.add_edge(d[k,i]*w[k,i], color="green")
G.add_edge(d[i,j]*f[i,j]>0, color="blue")
nx.draw(G, with_labels=True)
plt.show()
这里是确定的节点和边(W[k,i] 是一个更长的列表)W & F 是边,Y 是节点。 d[i,j] 是距离。距离是给定位置的节点之间的距离。
Y[0] 1
Y[1] 1
Y[3] 1
Y[12] 1
Y[57] 1
Y[59] 1
W[22,0] 1
W[23,0] 1
W[24,0] 1
F[0,0] 5
F[0,1] 5
F[1,3] 4
F[3,59] 3
F[3,98] 3.63798e-12
F[8,51] 5.65326e-12
F[24,8] 4.65317e-12
F[25,0] 7.10543e-15
F[25,24] 1.81366e-12
F[51,8] 1.56776e-15
F[51,59] 4.78817e-12
F[57,12] 1
F[59,57] 2
我收到此错误:
TypeError Traceback (most recent call last)
<ipython-input-314-9036a4e704aa> in <module>
23 G.add_node(y[i]==1, color="blue", size=500)
24 G.add_node(y[i]==0, color="green", size=300)
---> 25 G.add_edge(d[k,i]*w[k,i], color="green")
26 G.add_edge(d[i,j]*f[i,j]>0, color="blue")
27
TypeError: add_edge() missing 1 required positional argument: 'v_of_edge'
我需要添加什么来制作图表?
【问题讨论】:
你的问题不清楚。y
的字典在哪里?
所以 y 是一个二进制变量(w 和 f 也是):N= range(0, nodes)
y = # Yi, denoting if a facility is located at site i for i in N: y[i] = MultiModel.addVar (lb = 0, vtype = GRB.BINARY, obj = instcost, name = 'Y[' + str(i) + ']')
我不相信我有 y
的字典
简而言之:我想制作一个上面给出的列表的图表。所有 Y 值代表一个节点,所有 F 值代表 Y 节点之间的边,所有 W 值是连接节点 k 和 Y 节点的边。
【参考方案1】:
add_edge 接受 2 个强制参数作为输入:u_of_edge
和 v_of_edge
。
在你的代码中
G.add_edge(u_of_edge=d[k,i]*w[k,i], color="green")
^^^^^^
G.add_edge(u_of_edge=d[i,j]*f[i,j]>0, color="blue")
^^^^^^
您缺少v_of_edge
节点,这就是您获得TypeError
的原因。
【讨论】:
你知道我如何实现这个节点吗? (感谢您的回答) 不清楚d
、w
和f
是什么。展示一些他们的内容示例,解决问题会容易得多。但是,如果您知道边和节点,则只需将 2 个端点作为参数传递。以上是关于创建确定的边和节点的图形的主要内容,如果未能解决你的问题,请参考以下文章