Каждый узел в графе является экземпляром класса Node
, а атрибуты узлов задаются с помощью ItemAttribute
. Это означает, что вы можете изменить атрибуты узлов отдельно. Таким образом, вам нужно только получить доступ к узлам. Это возможно против iternodes
, итератора на узлах AGraph
. Вот пример использования networkx
и pygraphviz
вместе и изменения атрибутов узла:
import networkx as nx
import pygraphviz as pgv
G = nx.DiGraph()
nodes = {'a', 'b', 'c'}
edges = {('a', 'b'), ('b', 'c'), ('a', 'c')}
G.add_nodes_from(nodes)
G.add_edges_from(edges)
A = nx.nx_agraph.to_agraph(G)
shapes = ['circle', 'box']
for i, node in enumerate(A.iternodes()):
node.attr['shape'] = shapes[i%2]
A.layout()
A.draw('graph.png')