ape (version 5.7-1)

as.phylo: Conversion Among Tree and Network Objects


as.phylo is a generic function which converts an object into a tree of class "phylo". There are currently two methods for objects of class "hclust" and of class "phylog" (implemented in the package ade4). The default method is for any object inheriting the class "phylo" which is returned unchanged.

as.hclust.phylo is a method of the generic as.hclust which converts an object of class "phylo" into one of class "hclust". This can used to convert an object of class "phylo" into one of class "dendrogram" (see examples).

as.network and as.igraph convert trees of class "phylo" into these respective classes defined in the packages of the same names (where the generics are defined).

old2new.phylo and new2old.phylo are utility functions for converting between the old and new coding of the class "phylo".


as.phylo(x, ...)
# S3 method for default
as.phylo(x, ...)
# S3 method for hclust
as.phylo(x, ...)
# S3 method for phylog
as.phylo(x, ...)
# S3 method for phylo
as.hclust(x, ...)
# S3 method for phylo
as.network(x, directed = is.rooted(x), ...)
# S3 method for phylo
as.igraph(x, directed = is.rooted(x), use.labels = TRUE, ...)


An object of class "hclust", "phylo", "network", or "igraph".



an object to be converted into another class.


a logical value: should the network be directed? By default, this depends on whether the tree is rooted or not.


a logical specifying whether to use labels to build the network of class "igraph". If TRUE and the tree has no node labels, then some default labels are created first. If FALSE, the network is built with integers.


further arguments to be passed to or from other methods.


an object of class "phylo".


Emmanuel Paradis

See Also

hclust, as.hclust, dendrogram, as.phylo.formula


Run this code
hc <- as.hclust(bird.orders)
tr <- as.phylo(hc)
all.equal(bird.orders, tr) # TRUE

### shows the three plots for tree objects:
dend <- as.dendrogram(hc)
layout(matrix(c(1:3, 3), 2, 2))
plot(bird.orders, font = 1)
par(mar = c(8, 0, 0, 0)) # leave space for the labels

### how to get identical plots with
### plot.phylo and plot.dendrogram:
layout(matrix(1:2, 2, 1))
plot(bird.orders, font = 1, no.margin = TRUE, label.offset = 0.4)
par(mar = c(0, 0, 0, 8))
plot(dend, horiz = TRUE)

if (FALSE) {
### convert into networks:
if (require(network)) {
    x <- as.network(rtree(10))
    plot(x, vertex.cex = 1:4)
    plot(x, displaylabels = TRUE)
tr <- rtree(5)
if (require(igraph)) {
    print((x <- as.igraph(tr)))
    print(as.igraph(tr, TRUE, FALSE))
    print(as.igraph(tr, FALSE, FALSE))

Run the code above in your browser using DataCamp Workspace