[英]Labelling a graph in python3
我正在尝试使用 networkx 构建一个图形,使用节点作为 class 对象。 我已经标记了节点,但我无法显示标记的边缘(实际上,根本不是边缘)。 我期望通过在节点 class 中定义相邻节点来实现这一点。 我在下面显示我的代码:
# Packages
import random as rd
import networkx as nx
from matplotlib import pyplot as plt
# Classes
class Node:
def __init__(self, name):
self.name = name
self.state = rd.choice([-1, 0, 1])
self.neighbour = None
def get_name(self):
return self.name
def get_state(self):
return self.state
def get_neighbour(self):
return self.neighbour
# Nodes and neighbours
n1 = Node(1)
n2 = Node(2)
n3 = Node(3)
n1.neighbour = n2
n2.neighbour = n3
# Graph
G = nx.Graph()
G.add_node(n1.name)
G.add_node(n2.name)
G.add_node(n3.name)
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos)
nx.draw_networkx_edges(G, pos)
nx.draw_networkx_labels(G, pos)
#nx.draw_spectral(G, with_labels=True) # I also tried this suggestion, but unsuccessfully
plt.savefig('jupyter_graph.png')
“状态”属性的原因是因为我想根据节点的 state 更改节点的颜色(这是另一个问题)。 output如下:
没有边缘出现。 你能帮助我吗?
networkx
package 不会根据Node
class 中的属性创建图形。 显示这些值的原因是您在使用G.add_node(n1.name)
将新节点添加到图中时传递了它们。 同样,为了添加边,您需要调用add_edge
方法。 请参考 教程
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.