Как отобразить циклы в графическом чертеже networkx


У меня есть простой граф, построенный с помощью NetworkX следующим образом:

import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()
G.add_edges_from([(0,1), (0,2), (1,1), (1,2)])
nx.draw_networkx(G)
plt.show() 

Когда я рисую этот график, я получаю следующее изображение:

Введите описание изображения здесь

Граф также имеет ребро (1,1), но оно не показывает это ребро на изображении. Как я могу нарисовать этот край тоже? Я думаю, что это результат отсутствия стрелок. Эта визуализация действительно очень плоха. Как я могу использовать стрелки вместо этих жирных линий?

1 2

1 ответ:

Graphviz отлично справляется с рисованием стрелок и петель. (Нетривиальный для реализации в библиотек matplotlib). Вот пример:

import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()
G.add_edges_from(\[(0,1), (0,2), (1,1), (1,2)\])
nx.write_dot(G,'graph.dot')

# then run dot -Tpng graph.dot > graph.png

Введите описание изображения здесь