Networkx;在nx.MultiDiGraph图中移动边

时间:2015-10-21 15:07:55

标签: ipython-notebook graphviz networkx directed-graph

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

enter image description here

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

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')

哪个产生

enter image description here

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

1 个答案:

答案 0 :(得分:1)

您正在使用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

enter image description here

文档