Jua*_*nPi 12 python matplotlib graphviz networkx python-2.7
使用graphviz neato正确绘制以下多图(即平行边不重叠)以生成png(如本答案所示)
import networkx as nx
nx.MultiGraph ([(1,2),(1,2),(1,2),(3,1),(3,2)])
nx.write_dot(Gm,'multi.dot')
!neato -T png multi.dot > multi.png
Run Code Online (Sandbox Code Playgroud)
但是,使用Networkx的绘图功能并不能解决问题
nx.draw_graphviz(Gm,prog='neato')
Run Code Online (Sandbox Code Playgroud)
是否可以使用Networkx的draw方法防止重叠边缘?
谢谢
您可以使用计算出的节点位置直接使用 matplotlib。
G=nx.MultiGraph ([(1,2),(1,2),(1,2),(3,1),(3,2)])
pos = nx.random_layout(G)
nx.draw_networkx_nodes(G, pos, node_color = 'r', node_size = 100, alpha = 1)
ax = plt.gca()
for e in G.edges:
ax.annotate("",
xy=pos[e[0]], xycoords='data',
xytext=pos[e[1]], textcoords='data',
arrowprops=dict(arrowstyle="->", color="0.5",
shrinkA=5, shrinkB=5,
patchA=None, patchB=None,
connectionstyle="arc3,rad=rrr".replace('rrr',str(0.3*e[2])
),
),
)
plt.axis('off')
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4689 次 |
| 最近记录: |