如何给`ete3`树上的叶子上色?(蟒蛇 3)

O.r*_*rka 3 python tree colors etetoolkit ete3

我刚开始使用ete3,它很棒。

如何ete3使用颜色字典为Tree 对象的叶子着色?我做"c":None是因为我不想c出现。

我想更好地控制树渲染,但我无法弄清楚如何做到这一点。

我看到有NodeStyle对象,但我认为这是针对实际节点的。看起来这个TextFace对象是我需要的,但我不知道如何使用它。 所有的例子都是添加标签。

# Build Tree
tree = ete3.Tree( "((a,b),c);" )
# Leaf mapping
D_leaf_color = {"a":"r", "b":"g","c":None}
# Set up style for circular tree
ts = ete3.TreeStyle()
ts.mode = "c"
# Draw Tree
tree.render("tree_test.png", dpi=300, w=500, tree_style=ts)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我看着这个问题,但它非常令人困惑: 如何使用一组固定的颜色为树节点着色?

jhc*_*jhc 5

我会这样做:

from ete3 import Tree, TextFace, TreeStyle

# Build Tree
tree = Tree( "((a,b),c);" )
# Leaf mapping
D_leaf_color = {"a":"red", "b":"green"}
for node in tree.traverse():
    # Hide node circles
    node.img_style['size'] = 0
    if node.is_leaf():
        color = D_leaf_color.get(node.name, None)
        if color:
            name_face = TextFace(node.name, fgcolor=color, fsize=10)
            node.add_face(name_face, column=0, position='branch-right')
# Set up style for circular tree
ts = TreeStyle()
ts.mode = "c"
ts.scale = 10
# Disable the default tip names config
ts.show_leaf_name = False
ts.show_scale = False
# Draw Tree
tree.render("tree_test.png", dpi=300, w=500, tree_style=ts)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明