假设我有一个DiGraph DG
,它代表最小的生成树,如下所示。我想根据一种情况更改边缘的颜色。
cc = [('8k3aO-mPeyhbR5HUucA5aA', 'Hi10sGSZNxQH3NLyWSZ1oA'),
('8k3aO-mPeyhbR5HUucA5aA', 'bLbSNkLggFnqwNNzzq-Ijw'),
('8k3aO-mPeyhbR5HUucA5aA', 'nmdkHL2JKFx55T3nq5VziA'),
('8k3aO-mPeyhbR5HUucA5aA', '_BcWyKQL16ndpBdggh2kNA'),
('8k3aO-mPeyhbR5HUucA5aA', 'CQUDh80m48xnzUkx-X5NAw'),
('8k3aO-mPeyhbR5HUucA5aA', 'wZPizeBxMAyOSl0M0zuCjg'),
('8k3aO-mPeyhbR5HUucA5aA', 'hWDybu_KvYLSdEFzGrniTw'),
('8k3aO-mPeyhbR5HUucA5aA', 'kS1MQHYwIfD0462PE61IBw'),
('8k3aO-mPeyhbR5HUucA5aA', 'HFECrzYDpgbS5EmTBtj2zQ'),
('RtGqdDBvvBCjcu5dUqwfzA', 'Xwnf20FKuikiHcSpcEbpKQ'),
('RtGqdDBvvBCjcu5dUqwfzA', 'bLbSNkLggFnqwNNzzq-Ijw'),
('RtGqdDBvvBCjcu5dUqwfzA', 'WG3w_73scm_JUWJ_3Lgn0Q'),
('P5bUL3Engv-2z6kKohB6qQ', 'Hi10sGSZNxQH3NLyWSZ1oA'),
('P5bUL3Engv-2z6kKohB6qQ', 'nzsv-p1O8gCfP3XijfQrIw'),
('P5bUL3Engv-2z6kKohB6qQ', 'm07sy7eLtOjVdZ8oN9JKag'),
('hWDybu_KvYLSdEFzGrniTw', 'U4INQZOPSUaj8hMjLlZ3KA'),
('8RcEwGrFIgkt9WQ35E6SnQ', 'wZPizeBxMAyOSl0M0zuCjg'),
('Xwnf20FKuikiHcSpcEbpKQ', 'CxDOIDnH8gp9KXzpBHJYXw'),
('HFECrzYDpgbS5EmTBtj2zQ', 'Xj0O2l0bp633ebmG468aZw'),
('XYSDrIef7g4Gmp3lNFVO6A', 'wZPizeBxMAyOSl0M0zuCjg'),
('wZPizeBxMAyOSl0M0zuCjg', 'syvwUKQJ4OYfmL_ixVLMeQ')]
DG = nx.DiGraph()
DG.add_edges_from(cc)
pos = nx.spring_layout(DG)
plt.figure(figsize=(20,20))
nx.draw(DG, pos = pos, arrows = False,
node_color = 'black', width = 0.7, alpha = 0.9)
请注意,它是最小生成树的图形。 我想将2度节点与其后继节点之间的边缘着色为蓝色。例如,('HFECrzYDpgbS5EmTBtj2zQ', 'Xj0O2l0bp633ebmG468aZw')
的边缘颜色应为蓝色。有人可以帮我吗?
答案 0 :(得分:0)
您需要将颜色列表传递给edge_color
方法的nx.draw()
参数。现在,在条件为if-else的情况下,创建列表的一种方法如下:
edge_colors = ['color1' if your_condition else 'color2' for e in G.edges]
在这里,e
是一个边,在NetworkX v2.1中,它只是一个元组(node1, node2)
。您可以使用边缘本身或元组中的每个节点进行调节。
在您的特定情况下(如果我对您的理解正确),应该是:
edge_colors = ['blue' if DG.degree[e[0]] == 2 else 'black' for e in DG.edges]
然后,将其传递给edge_color
参数。就您而言:
nx.draw(DG, pos=pos, arrows=False, edge_color=edge_colors, node_color='black', width=0.7, alpha=0.9)