我已经建立了一个树图像,请参阅问题。
现在我有一些主要的群体。
一组具有绿色和棕色的节点,并具有“B”和“A”。第二组只有粉色节点和“T”,最后一组有黄色、橙色和蓝色,以及字母“L”、“X”和“H”。颜色是指节点的颜色,字母属于名称。所以我想为不同组的边缘着色。
#taken from draw_graphviz
def get_label_mapping(G, selection):
for node in G.nodes():
if (selection is None) or (node in selection):
try:
label = str(node)
if label not in (None, node.__class__.__name__):
yield (node, label)
except (LookupError, AttributeError, ValueError):
pass
labels = dict(get_label_mapping(G, None))
for label in labels.keys():
if str(label) != "Clade":
num = label.name.split('-')
if 'T' in num[0]:
node_colors.append('#CC6699')
elif 'X' in num[0]:
node_colors.append('r')
else:
node_colors.append('y')
所以我做了与上面类似的功能,而不是node,我改为get_edge。试试这个:
for edge in edges.keys():
if str(edge) != "Clade":
if 'T' in edge:
edge_colors.append('b')
其中边缘是:
(Clade(branch_length=-0.00193, name='T-7199-8'), Clade(branch_length=0.00494))
也许有一种方法可以说明 T 是否名副其实,然后给边缘上色。你怎么看?
有人知道该怎么做吗?
谢谢