Я пытаюсь построить граф с помощью networkx, используя узлы как объекты класса. Я уже пометил узлы, но я не могу показать помеченные ребра (на самом деле, вообще не ребра). Я ожидал сделать это, определив соседние узлы внутри класса Node. Я показываю свой код ниже:
# 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» в том, что я хочу изменить цвета узлов в зависимости от их состояния (это еще одна проблема). Результат ниже:
введите описание изображения здесь
Края отсутствуют. Вы можете мне помочь?