Learn R Programming

⚠️There's a newer version (1.18.1) of this package.Take me there.

dendextend

Table of contents:

Introduction

Class "dendrogram" provides general functions for handling tree-like structures in R. It is intended as a replacement for similar functions in hierarchical clustering and classification/regression trees, such that all of these can use the same engine for plotting or cutting trees.

However, many basic features are still missing from the dendrogram class. This package aims at filling in some gaps.

Motivation

Extending R core dendrogram functions.

Installation

To install the stable version on CRAN:

install.packages('dendextend')
# install.packages('dendextendRcpp')

To install the GitHub version:

install.packages.2 <- function (pkg) if (!require(pkg)) install.packages(pkg);
install.packages.2('devtools')
# install.packages.2('Rcpp')
# make sure you have Rtools installed first! if not, then run:
#install.packages('installr'); install.Rtools()
devtools::install_github('talgalili/dendextend')
# devtools::install_github('talgalili/dendextendRcpp')

# Having colorspace is also useful, since it is used
# In various examples in the vignettes
install.packages.2('colorspace')

And then you may load the package using:

library("dendextend")
# library("dendextendRcpp") # dendextendRcpp is no longer supported (or available on CRAN). Still, dendextend is faster these days, in recent versions of R, thanks to some updates to labels.dendrogram and other modifications to R.

Usage

Vignettes:

Share your dendrograms!

If you have made interesting work using the dendextend package, I would LOVE to know about it. It can be a blog post, an academic paper, or just some plots you made for your work in the industry. Please contact me (see below) with what you have done, and I would also be happy to promote it in this page.

Usages of dendextend

Packages:

How to cite the dendextend package

The methods within the code package can be cited as:

 Tal Galili (2015). dendextend: an R package for visualizing, adjusting, and comparing trees of
 hierarchical clustering. Bioinformatics. DOI: 10.1093/bioinformatics/btv428

A BibTeX entry for LaTeX users is

 @Article{,
   author = {Tal Galili},
   title = {dendextend: an R package for visualizing, adjusting, and comparing trees of hierarchical clustering},
   journal = {Bioinformatics},
   year = {2015},
   doi = {10.1093/bioinformatics/btv428},
   url = {https://academic.oup.com/bioinformatics/article/31/22/3718/240978/dendextend-an-R-package-for-visualizing-adjusting},
   eprint = {https://academic.oup.com/bioinformatics/article-pdf/31/22/3718/17122682/btv428.pdf},
 }

This free open-source software implements academic research by the authors and co-workers. If you use it, please support the project by citing the appropriate journal articles.

Contact

You are welcome to:

Latest news

You can see the most recent changes to the package in the NEWS.md file

Code of conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Copy Link

Version

Install

install.packages('dendextend')

Monthly Downloads

87,793

Version

1.10.0

License

GPL-2 | GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Tal Galili

Last Published

March 15th, 2019

Functions in dendextend (1.10.0)

all_unique

Check if all the elements in a vector are unique
assign_dendextend_options

Populates dendextend functions into dendextend_options
branches_attr_by_labels

Change col/lwd/lty of branches matching labels condition
branches_attr_by_clusters

Change col/lwd/lty of branches based on clusters
cutree

Cut a Tree (Dendrogram/hclust/phylo) into Groups of Data
cutree_1h.dendrogram

cutree for dendrogram (by 1 height only!)
cutree_1k.dendrogram

cutree for dendrogram (by 1 k value only!)
assign_values_to_branches_edgePar

Assign values to edgePar of dendrogram's branches
cut_lower_fun

Cut a dendrogram - and run a function on the output
as.phylo.dendrogram

Convert a dendrogram into phylo
as.dendlist

Try to coerce something into a dendlist
assign_values_to_leaves_edgePar

Assign values to edgePar of dendrogram's leaves
FM_index_profdpm

Calculating Fowlkes-Mallows index using the profdpm R package
colored_dots

Add colored dots beside a dendrogram
assign_values_to_nodes_nodePar

Assign values to nodePar of dendrogram's nodes
collapse_branch

Collapse branches under a tolerance level
click_rotate

Interactively rotate a tree object
bakers_gamma_for_2_k_matrix

Bakers Gamma for two k matrices
assign_values_to_leaves_nodePar

Assign values to nodePar of dendrogram's leaves
min_depth

Find minimum/maximum depth of a dendrogram
as_hclust_fixed

Convert dendrogram Objects to Class hclust
d3dendrogram

Plot dendrogram to webpage and view.
color_branches

Color tree's branches according to sub-clusters
cor_common_nodes

Proportion of commong nodes between two trees
cor_bakers_gamma

Baker's Gamma correlation coefficient
d3dendro_options

Get or set current defaults for d3dendrogram
color_labels

Color dend's labels according to sub-clusters
duplicate_leaf

Duplicate a leaf X times
fac2num

Turns a factor into a number
common_subtrees_clusters

Find clusters of common subtrees
dend_expend

Finds a "good" dendrogram for a dist
get_nodes_attr

Get attributes of dendrogram's nodes
get_nodes_xy

Get the x-y coordinates of a dendrogram's nodes
entanglement

Measures entanglement between two trees
get_branches_heights

Get height attributes from a dendrogram
get_root_branches_attr

get attributes from the dendrogram's root(!) branches
flip_leaves

Flip leaves
dend_diff

Plots two trees side by side, highlighting edges unique to each tree in red.
is.natural.number

Check if numbers are natural
is_null_list

Checks if the value is and empty list()
dist.dendlist

Topological Distances Between Two dendrograms
fix_members_attr.dendrogram

Fix members attr in a dendrogram
has_component_in_attribute

Does a dendrogram has an edgePar/nodePar component?
find_dendrogram

Search for the subdendrogram structure composed of indicated labels
find_k

Find the (estimated) number of clusters for a dendrogram using average silhouette width
dendextend-package

Functions for extending dendrogram objects
get_subdendrograms

Extract a list of k subdendrograms from a given dendrogram object
flatten.dendrogram

Flatten the branches of a dendrogram's root
color_unique_labels

Color unique labels in a dendrogram
get_leaves_edgePar

Get edgePar of dendrogram's leaves
get_leaves_nodePar

Get nodePar of dendrogram's leaves
na_locf

Last Observation Carried Forward
highlight_distinct_edges

Highlight distint edges in a tree (compared to another one)
highlight_branches_col

Highlight a dendrogram's branches heights via color and line-width
prune

Prunes a tree (using leaves' labels)
nleaves

Counts the number of leaves in a tree
is_some_class

Is the object of some class
heights_per_k.dendrogram

Which height will result in which k for a dendrogram
prune_common_subtrees.dendlist

Prune trees to their common subtrees
colored_bars

Add colored bars to a dendrogram
khan

Microarray gene expression dataset from Khan et al., 2001. Subset of 306 genes.
match_order_by_labels

Adjust the order of one dendrogram based on another (using labels)
nnodes

Counts the number of nodes (Vertices) in a tree
pvclust_show_signif

The significant branches in a dendrogram, based on a pvclust object
noded_with_condition

Find which nodes satisfies a condition
branches_attr_by_lists

Change col/lwd/lty of branches from the root down to clusters defined by list of labels of respective members
leaf_Colors

Return the leaf Colors of a dendrogram
match_order_dendrogram_by_old_order

Adjust the order of one dendrogram based on another (using order)
circlize_dendrogram

Plot a circlized dendrograms
prune_leaf

Trims one leaf from a dendrogram
cor_cophenetic

Cophenetic correlation between two trees
cor.dendlist

Correlation matrix between a list of trees.
dendextend_options

Access to dendextend_options
count_terminal_nodes

Counts the number of terminal nodes (merging 0 nodes!)
pvclust_edges

Get Pvclust Edges Information
remove_leaves_nodePar

Remove all nodePar values from a dendrogram's leaves
shuffle

Random rotation of trees
remove_branches_edgePar

Remove all edgePar values from a dendrogram's branches
reexports

Objects exported from other packages
sort_2_clusters_vectors

Sorts two clusters vector by their names
cor_FM_index

Correlation of FM_index for some k
dendlist

Creating a dendlist object from several dendrograms
reindex_dend

Reindexing a pruned dendrogram
dist_long

Turns a dist object to a "long" table
get_leaves_branches_attr

Get an attribute of the branches of a dendrogram's leaves
pvclust_show_signif_gradient

Significance gradient of branches in a dendrogram (via pvclust)
sort_dist_mat

Sorts a distance matrix by rows and columns names
get_leaves_branches_col

Get the colors of the branches of a dendrogram's leaves
identify.dendrogram

Identify Clusters in a Dendrogram (not hclust)
sort_levels_values

Sort the values level in a vector
lowest_common_branch

Find lowest common branch were the two items are shared
rank_values_with_clusters

Rank a vector based on clusters
which_node

Which node id is common to a group of labels
intersect_trees

Intersect trees
untangle_step_rotate_2side

Stepwise untangle two trees one at a time
distinct_edges

Finds distinct edges in one tree compared to another
get_childrens_heights

Get height attributes from a dendrogram's children
which_leaf

Which node is a leaf?
rect.dendrogram

Draw Rectangles Around a Dendrogram's Clusters
get_leaves_attr

Get/set attributes of dendrogram's leaves
set

Set (/update) features to a dendrogram
labels_colors

Retrieve/assign colors to the labels of a dendrogram
ladderize

Ladderize a Tree
partition_leaves

A list with labels for each subtree (edge)
rank_order.dendrogram

Fix rank of leaves order values in a dendrogram
rank_branches

Rank branches' heights
plot_horiz.dendrogram

Plotting a left-tip-adjusted horizontal dendrogram
ggdend

Creates dendrogram plot using ggplot.
hang.dendrogram

Hang dendrogram leaves
rotate_DendSer

Rotates dend based on DendSer
theme_dendro

Creates completely blank theme in ggplot
rotate

Rotate a tree object
unbranch

unbranch trees
tanglegram

Tanglegram plot
set_labels

Set/place new labels in a dendrogram
untangle_random_search

Untangle - random search
untangle_step_rotate_1side

Stepwise untangle one tree compared to another
labels<-

"label" assignment operator
unclass_dend

unclass an entire dendrogram tree
labels_cex

Retrieve/assign cex to the labels of a dendrogram
order.dendrogram<-

order.dendrogram<- assignment operator
order.hclust

Ordering of the Leaves in a hclust Dendrogram
pvrect2

Draw Rectangles Around a Dendrogram's Clusters with High/Low P-values
raise.dendrogram

Raise the height of a dendrogram tree
remove_nodes_nodePar

Remove all nodePar values from a dendrogram's nodes
rllply

recursivly apply a function on a list
sample.dendrogram

Sample a tree
seriate_dendrogram

Rotates a dendrogram based on a seriation of a distance matrix
untangle

untangle dendrograms
untangle_DendSer

Tries to run DendSer on a dendrogram
FM_index

Calculating Fowlkes-Mallows Index
FM_index_permutation

Calculating Fowlkes-Mallows Index under H0
Bk

Bk - Calculating Fowlkes-Mallows Index for two dendrogram
Bk_permutations

Bk permutation - Calculating Fowlkes-Mallows Index for two dendrogram
Bk_plot

Bk plot - ploting the Fowlkes-Mallows Index of two dendrogram for various k's
FM_index_R

Calculating Fowlkes-Mallows index in R
all.equal.dendrogram

Global Comparison of two (or more) dendrograms
all_couple_rotations_at_k

Rotate tree branches for k
DendSer.dendrogram

Tries to run DendSer on a dendrogram