我正在使用networkx。我的意思是为每个weakly_connected_component_subgraphs绘制使用不同颜色的有向图。Networkx:为每个连接的组件使用不同的颜色
这意味着将该颜色用于子图的节点和边缘。 我遵循示例here, 将颜色列表(每个节点一个)作为参数node_color
在nx.draw_networkx_nodes
中添加。
的颜色节点名单与
colorlist = [ 'r', 'g', 'b', 'c', 'm', 'y', 'k' ]
ncolors = len(colorlist)
wcc = nx.weakly_connected_component_subgraphs(my_network)
color_nodes = [ colorlist[ 0 ] ] * nnodes
isg = 0
for sg in wcc :
isg += 1
color_sg = colorlist[ isg % ncolors ]
# List of nodes in sg
sgnodes = nx.nodes(sg)
for i in range(len(sgnodes)) :
color_nodes[ sgnodes[ i ] ] = color_sg
我趁着我的节点被标有顺序编号,从零开始建造。
如何设置边缘的颜色列表?(如果节点没有按顺序编号,可能会出现同样的问题)。
我conceieve是得到sgedges = nx.edges(sg)
然后遍历nwedges = nx.edges(my_network)
和使用计数器,检查是否每一条边是sgedges
的方式。如果是这样,请在列表color_edges = [ colorlist[ 0 ] ] * nedges
中设置相应的元素。
这似乎对我来说颇为复杂,我想这可能是一种更简单的方法。
感谢您的建议。它与[这里]做的相似(https://networkx.github.io/documentation/networkx-1.10/examples/graph/atlas.HTML)。我意识到这一点。在绘制所有wcc后,应该发出'plt.savefig'。它产生了预期的结果,但是使用与寻求的方法不同的方法。我寻找一个颜色列表作为'edge_color'的参数,在整个图上调用'nx.draw_networkx'。这意味着在整个图中为每条边确定一个索引(所以我问“我如何设置边的颜色列表?”而不是“如何生成图形?”) –
也许使用'edgelist'工作,我不知道那件事。我会查一下。 –