网络x;在 nx.MultiDiGraph 图中移动边

Networkx; move edges in nx.MultiDiGraph plot

问题很简单。但是,官方文档或搜索都没有太大帮助。我正在寻找创建的东西(在一个简单的例子中)看起来像这样:

我想绘制一个非常简单的有向图,有一个节点,两个 自循环。这是我到目前为止得到的。

import networkx as nx
from nxpd import draw
G = nx.MultiDiGraph()
G.graph['dpi'] = 120
{'state': 'Low'}
G.add_nodes_from(range(1,2))
G.add_edges_from([(1,1),(1,1)])
pos=nx.get_node_attributes(G,'pos')
draw(G, show='ipynb')

产生

但是,我非常希望另一条边在左边,并且与第一条边的大小相等。

您正在使用 Graphviz 通过那里的 draw() 命令绘制图形。 Graphviz 的属性设置记录在 http://www.graphviz.org/content/attrs

在您的情况下,您想使用 "headport" 和 "tailport" 来设置边缘与节点的交汇处。

尝试

import networkx as nx
G = nx.MultiDiGraph()
G.add_edge(1,1,headport='sw',tailport='nw')
G.add_edge(1,1,headport='se',tailport='ne')
nx.write_dot(G,'sl.dot')
# run dot -Tpng sl.dot >sl.png

文档