2013-02-24 268 views
10

时正确以下多重图地块使用的graphviz NEATONetworkx:重叠边缘可视化多重图

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 

然而,使用Networkx的绘制函数以生成PNG(如图this answer)(即平行的边缘不重叠)不会做的伎俩

nx.draw_graphviz(Gm,prog='neato') 

是否有可能避免重叠使用从Networkx draw方法的边缘?

感谢

回答

8

遗憾的是没有。在技​​术上可行,但迄今为止没有人编写代码。

+0

相关,暗示到,这需要在NetworkX添加:https://groups.google.com/forum/#!msg/networkx-discuss/K6QYbpBDUfk/1GqbsiocpCAJ – 2013-07-23 23:42:51

0

嗯,我知道它可能不是你要找的东西,但我正面临一个类似的问题,我想有一个有向图,其中两个节点之间的边缘根据方向有不同的权重(不管它是进出节点)和我所做的工作是我为每个边缘使用了不同的颜色,并减少了其中一个边的不透明度,因此即使它们重叠也会显示。 我只需要两个节点之间的两条边,所以它对我来说就是一招。

G = nx.DiGraph() 
G.add_nodes_from([0,1]) 
pos = nx.circular_layout(G) 
nx.draw_networkx_nodes(G, pos, node_color = 'r', node_size = 100, alpha = 1) 
nx.draw_networkx_edges(G, pos, edgelist = [(0,1)], width = 2, alpha = 0.5, edge_color='b') 
nx.draw_networkx_edges(G, pos, edgelist= [(1,0)], width = 1, alpha = 1) 
plt.axis('off') 
plt.show() 

enter image description here