如何在networkx图形绘制中显示循环

gen*_*k27 3 python graph matplotlib 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() 
Run Code Online (Sandbox Code Playgroud)

当我绘制这个图表时,我得到这个图像:

在此输入图像描述

该图还具有边(1,1),但它不会在图像上显示此边.我怎样才能画出这个优势呢?我认为这是不使用箭头的结果.这种可视化非常糟糕.如何使用箭头代替粗线?

Ari*_*ric 7

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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我在 networkx 1.11 版中收到 `AttributeError: 'module' object has no attribute 'write_dot'` 并且我同时安装了 pygraphviz 和 pydot。这是哪个版本? (2认同)
  • 使用`from networkx.drawing.nx_agraph import write_dot` (2认同)