Create Muller Plots of Evolutionary Dynamics

Create plots that combine a phylogeny and frequency dynamics. Phylogenetic input can be a generic adjacency matrix or a tree of class "phylo". Inspired by similar plots in publications of the labs of RE Lenski and JE Barrick. Named for HJ Muller (who popularised such plots) and H Wickham (whose code this package exploits).


Create Muller Plots of Evolutionary Dynamics

To install the CRAN version:


To install the github version using devtools:


Basic usage

The main functions in ggmuller are get_Muller_df and Muller_plot, which we can run on some data included in the package:

# reformat data ready for plotting:
Muller_df <- get_Muller_df(example_edges, example_pop_df)
# generate the plot:

How-to guides

The best place to start is the CRAN vignette, which includes an overview of features and some worked examples.

An older, slightly different set of instructions can be found in a blog post on Visualizing evolutionary dynamics with ggmuller.

Version history

0.5.3: get_Muller_df now fills all columns when adding missing rows (issue #10); polygon edges now aren't drawn by default.

0.5.2: Can cope with the special case of only one genotype.

0.5.1: Can use brewer palettes.

0.5: Smoother plots from sparse data; time column can now be called "Time" instead of "Generation"; replace missing population sizes with zeroes.

0.4: Smoother plotting by default when genotypes suddenly grow from zero to large frequencies; new "start_positions" parameter can be used to override this default.

0.3: Bug fixes; in particular, the "threshold" option is replaced by "cutoff" (genotypes whose abundance never exceeds "cutoff" are removed, whereas previously genotypes whose abundance never exceeded twice "threshold" were removed).

0.2.2: Bug fixes and deprecation of superfluous options.

0.2.1: Correct mistake in calculating population sizes for Muller_pop_plot.

0.2.0: New function Muller_pop_plot shows variation in population size as well as frequency (also known as a fish plot).

0.1.3: Compatibility with dplyr version 0.7.2; add option for smoother plotting of genotype emergence points.

0.1.2: Better plotting of the points at which genotypes emerge.

0.1.1: Essential update for compatibility with ggplot2 version 2.2.0.

0.1.0: First release.


To cite ggmuller in publications please use

Robert Noble (2019). ggmuller: Create Muller Plots of Evolutionary Dynamics. R package version 0.5.3. doi:10.5281/zenodo.591304

A BibTeX entry for LaTeX users is

title = {ggmuller: Create Muller Plots of Evolutionary Dynamics},
author = {Robert Noble},
year = {2019},
note = {R package version 0.5.3},
url = {},
doi = 10.5281/zenodo.591304

Please amend the version number as appropriate.


Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.5.4 by Robert Noble, a year ago

Browse source code at

Authors: Robert Noble [aut, cre]

Documentation:   PDF Manual  

Task views: Phylogenetics, Especially Comparative Methods

MIT + file LICENSE license

Imports dplyr, ggplot2, ape

Suggests RColorBrewer, knitr, rmarkdown

See at CRAN