创建确定的边和节点的图形

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_edgev_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 的原因。

【讨论】:

你知道我如何实现这个节点吗? (感谢您的回答) 不清楚dwf是什么。展示一些他们的内容示例,解决问题会容易得多。但是,如果您知道边和节点,则只需将 2 个端点作为参数传递。

以上是关于创建确定的边和节点的图形的主要内容,如果未能解决你的问题,请参考以下文章

cytoscape.js 图,仅显示/绘制少数节点和边缘

在图中找到最长的路径,其中每个节点最多有两条传入边和两条传出边

如何理解 GraphQL 中的空边和节点

text GraphQl Vue.js循环遍历边和节点

networkx绘制拓扑图节点的边和权,Python

Task05 Neo4j 图数据库查询