Skip to content

Vizualizare Arbori Filogenetici cu Matplotlib

DodaTech Updated 2025-01-15 2 min read

You will learn how to visualize phylogenetic trees using Matplotlib and Biopython.

The Problem

Arborii filogenetici necesita o reprezentare grafica clara care sa arate relatiile evolutive intre secvente. Un arbore prost desenat ascunde topologia si distantele evolutive.

The Wrong Way

Trasarea manuala a arborelui fara a utiliza layout-ul corespunzator:

import matplotlib.pyplot as plt
from Bio import Phylo
tree = Phylo.read('arbore.nwk', 'newick')
Phylo.draw(tree)  # layout default care poate fi suboptimal

Ce se intampla: Layout-ul implicit poate fi gresit scalat, cu etichete suprapuse si distante neclare.

The Right Way

Configureaza corect layout-ul si stilul arborelui:

from Bio import Phylo
import matplotlib.pyplot as plt

tree = Phylo.read('arbore.nwk', 'newick')
fig, ax = plt.subplots(1, 1, figsize=(10, 8))
Phylo.draw(tree, axes=ax, do_show=False,
           branch_labels=lambda c: f"{c.branch_length:.2f}",
           label_colors={'Root': 'red'})
ax.set_title('Arbore Filogenetic - Maximum Likelihood')
plt.tight_layout()
plt.show()

Rezultat asteptat: Un arbore clar, cu etichete lizibile, distante afisate si radacina evidentiata.

Step-by-Step Fix

1. Incarca arborele

from Bio import Phylo
tree = Phylo.read('aliniere.nwk', 'newick')

2. Configureaza vizualizarea

fig, ax = plt.subplots(figsize=(12, 8))
Phylo.draw(tree, axes=ax, do_show=False,
           label_func=lambda x: x.name if x.name else '',
           branch_labels=lambda x: f"{x.branch_length:.2f}"
           if x.branch_length and x.branch_length > 0.01 else '')

3. Stilizeaza arborele

import matplotlib.lines as mlines
for line in ax.lines:
    line.set_linewidth(1.5)
    line.set_color('darkblue')

4. Pentru cladograma (fara distante)

tree.ladderize()  # ordoneaza descendentii
Phylo.draw_graphviz(tree, prog='dot')  # layout alternativ

Prevention Tips

  • Foloseste ladderize pentru a ordona frunzele si a imbunatati lizibilitatea
  • Afiseaza distantele pe ramuri doar cand sunt relevante
  • Coloreaza cladele pentru a evidentia grupuri monofiletice
  • Rotește etichetele la 45° daca sunt multe frunze
  • Alege raportul de aspect in functie de numarul de taxoni

Common Mistakes

  1. Foloseste layout default care nu scaleaza corect arborele
  2. Nu afișeaza Bootstrap/suport -- increderea in ramuri este necunoscuta
  3. Etichetele se suprapun -- nu ajusteaza dimensiunea figurii la numarul de taxoni
  4. Ignora distantele pe ramuri -- lungimea ramurilor fara sens biologic
  5. Nu marcheaza radacina sau outgroup-ul -- polaritatea arborelui este neclara

Practice Exercise

Incarca un arbore Newick cu 20 de secvente, coloreaza 3 clade distincte si salveaza vizualizarea ca SVG pentru publicare.

FAQ

### Ce formate de arbori suporta Biopython?

Newick, NEXUS, PhyloXML, NeXML si altele prin intermediul Bio.Phylo.

Cum adaug suport Bootstrap pe ramuri?

Foloseste argumentul branch_labels cu o functie care extrage valorile de Bootstrap din adnotarile arborelui.

Ce este ladderize?

O functie care ordoneaza descendentii fiecarui nod intern dupa numarul de frunze, imbunatatind lizibilitatea arborelui.

Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. DodaTech tools integrate seamlessly with Python Data Science workflows for enhanced productivity and security.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro