Как наглядно расположить граф в NetworkX?
Как сделать так, чтобы граф выглядел более наглядно?
Этот код выводит граф, но частенько вершины накладываются друг на друга:
Граф рисую по матрице смежности. Она представлена в конце сообщения.
Пробовал draw_circular, но это не совсем то, что нужно.
import numpy as np
import matplotlib.pyplot as plt
import networkx as nx
def Get_adjacency_matrix(filename): #cчитывание графа из файла
adj_matrix = list()
graphfile = open(filename, 'r')
for l in graphfile:
l = l.rstrip()[1:-1].split()
for i in range(len(l)):
l[i] = int(l[i])
adj_matrix.append(l)
graphfile.close()
return adj_matrix
adj_matrix = Get_adjacency_matrix('MyGraph.txt')
G = nx.DiGraph(np.matrix(adj_matrix))
nx.draw(G, with_labels=True, node_size = 300, arrows = True)
# cmap = plt.get_cmap('jet'),
plt.show()
Матрица смежности (содержимое файла):
[0 0 1 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 1 0 0 0 0 0 0 0 0 0 0]
[0 0 0 1 1 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 1 0 0 0 0 0 0 0 0]
[0 0 0 0 0 1 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 1 0 0 0 1 0 0 0]
[0 0 0 0 0 0 0 1 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 1 0]
[0 0 0 0 0 0 0 0 0 1 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 1 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 1 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 1 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 1]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0]
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Выберете одно из возможных расположений (layout) и укажите его явно:
nx.draw(G, pos=nx.spring_layout(G), with_labels=True, node_size=300, arrows=True)
# NOTE: -> ^^^^^^^^^^^^^^^^^^^^^^^^
nx.draw(G, pos=nx.circular_layout(G), with_labels=True, node_size = 300, arrows = True)
nx.draw(G, pos=nx.planar_layout(G), with_labels=True, node_size = 300, arrows = True)
и т.д. ...



