我想要获得类似于这个的东西:
使用Python库networkx,我可以使用以下代码生成类似的有向图:
import matplotlib.pyplot as plt
import networkx as nx
G = nx.DiGraph()
G.add_edge('1','2')
G.add_edge('1','3')
G.add_edge('3','2')
G.add_edge('3','4')
G.add_edge('4','3')
nx.draw(G, node_color='w', edgecolors='k', width=2.0, with_labels=True)
plt.show()
这将会产生:
然而,节点3和4之间的箭头重叠在一起,看起来只是一个带有两个头的单一箭头。是否可能稍微分开它们,以更明显地表明那里有两个边缘而不仅仅是一个?(我知道可以使用pygraphviz来完成此操作,但我正在尝试使用matplotlib完成它。)
netgraph
关注于第二步,允许您通过node_positions
参数指定节点位置。因此,您可以使用networkx.drawing.nx_pydot.graphviz_layout
计算出一个 graphviz/neato 节点布局,然后将其传递给 netgraph。 - Paul Brodersen