如何通过networkx通过给出绘制边缘的顺序来绘制图形?

问题描述

我想通过networkx按边缘顺序绘制图形。在我的数据集中,有很多运输选择,但由于公交车占主导地位,因此看不到平均价格。如何在总线顶部绘制订单边?

colors_p = nx.get_edge_attributes(net_p,'color').values()
ax2 = fig.add_subplot(1,3,2)
nx.draw_networkx(net_p,ax=ax2,pos=nx.get_node_attributes(net_p,'pos'),with_labels=False,node_size=0.5,alpha=0.5,node_color = 'black',edge_color = colors_p)


ax2.get_xaxis().set_visible(False)
ax2.get_yaxis().set_visible(False)
proxies = [make_proxy(clr,lw=5) for clr in edge_types.keys()]
labels = [edge_type for clr,edge_type in edge_types.items()]
ax2.set_title('pspace')
plt.legend(proxies,labels);

enter image description here

解决方法

您可以调用按元素绘制图表的方法,而不必调用nx.draw_networkx()来按其认为合适的方式绘制图形。

首先提取边缘的子集(例如“轨道”边缘),然后使用nx.draw_networkx_edges()进行绘制。然后提取“电车”边缘,并再次用nx.draw_networkx_edges()绘制它们。最终,以相同的功能绘制“总线”边缘-它们将位于其他一切之上。

最后,用nx.draw_networkx_nodes()绘制节点。