Reconstructs the distribution of a character on a tree topology using the modified Fitch algorithm presented in Brazeau et al. (2019) .
PlotCharacter(
tree,
dataset,
char = 1L,
updateTips = FALSE,
plot = TRUE,
tokenCol = NULL,
ambigCol = "grey",
inappCol = "lightgrey",
ambigLty = "dotted",
inappLty = "dashed",
plainLty = par("lty"),
tipOffset = 1,
unitEdge = FALSE,
...
)
A tree of class phylo
.
A phylogenetic data matrix of phangorn class
phyDat
, whose names correspond to the labels of any accompanying tree.
Index of character to plot.
Logical; if FALSE
, tips will be labelled with their
original state in dataset
.
Logical specifying whether to plot the output.
Palette specifying colours to associate with each token in
turn, in the sequence listed in attr(dataset, "levels")
.
Colours and line types
to apply to ambiguous, inapplicable and applicable tokens. See the lty
graphical parameter for details of line styles. Overrides tokenCol
.
Numeric: how much to offset tips from their labels.
Logical: Should all edges be plotted with a unit length?
Further arguments to pass to plot.phylo()
.
PlotCharacter()
invisibly returns a matrix in which each row
corresponds to a numbered tip or node of tree
, and each column corresponds
to a token; the tokens that might parsimoniously be present at each point
on a tree are denoted with TRUE
.
Brazeau MD, Guillerme T, Smith MR (2019). “An algorithm for morphological phylogenetic analysis with inapplicable data.” Systematic Biology, 68(4), 619--631. doi:10.1093/sysbio/syy083 .
# Set up plotting area
oPar <- par(mar = rep(0, 4))
tree <- ape::read.tree(text =
"((((((a, b), c), d), e), f), (g, (h, (i, (j, (k, l))))));")
## A character with inapplicable data
dataset <- TreeTools::StringToPhyDat("23--1??--032", tips = tree)
plotted <- PlotCharacter(tree, dataset)
plotted
#> - 0 1 2 3
#> [1,] FALSE FALSE FALSE TRUE FALSE
#> [2,] FALSE FALSE FALSE FALSE TRUE
#> [3,] TRUE FALSE FALSE FALSE FALSE
#> [4,] TRUE FALSE FALSE FALSE FALSE
#> [5,] FALSE FALSE TRUE FALSE FALSE
#> [6,] TRUE TRUE TRUE TRUE TRUE
#> [7,] TRUE TRUE TRUE TRUE TRUE
#> [8,] TRUE FALSE FALSE FALSE FALSE
#> [9,] TRUE FALSE FALSE FALSE FALSE
#> [10,] FALSE TRUE FALSE FALSE FALSE
#> [11,] FALSE FALSE FALSE FALSE TRUE
#> [12,] FALSE FALSE FALSE TRUE FALSE
#> [13,] TRUE FALSE FALSE FALSE FALSE
#> [14,] TRUE FALSE FALSE FALSE FALSE
#> [15,] TRUE FALSE FALSE FALSE FALSE
#> [16,] TRUE FALSE FALSE FALSE FALSE
#> [17,] TRUE FALSE FALSE FALSE FALSE
#> [18,] FALSE FALSE FALSE TRUE TRUE
#> [19,] TRUE FALSE FALSE FALSE FALSE
#> [20,] TRUE FALSE FALSE FALSE FALSE
#> [21,] TRUE FALSE FALSE FALSE FALSE
#> [22,] FALSE TRUE FALSE TRUE TRUE
#> [23,] FALSE TRUE FALSE TRUE TRUE
# Character from a real dataset
data("Lobo", package = "TreeTools")
dataset <- Lobo.phy
tree <- TreeTools::NJTree(dataset)
PlotCharacter(tree, dataset, 14)
par(oPar)