Reconstructs the distribution of a character on a tree topology using the modified Fitch algorithm presented in Brazeau2019;textualTreeSearch.
Usage
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,
...
)
Arguments
- tree
A tree of class
phylo
.- dataset
A phylogenetic data matrix of phangorn class
phyDat
, whose names correspond to the labels of any accompanying tree.- char
Index of character to plot.
- updateTips
Logical; if
FALSE
, tips will be labelled with their original state indataset
.- plot
Logical specifying whether to plot the output.
- tokenCol
Palette specifying colours to associate with each token in turn, in the sequence listed in
attr(dataset, "levels")
.- ambigCol, ambigLty, inappCol, inappLty, plainLty
Colours and line types to apply to ambiguous, inapplicable and applicable tokens. See the
lty
graphical parameter for details of line styles. OverridestokenCol
.- tipOffset
Numeric: how much to offset tips from their labels.
- unitEdge
Logical: Should all edges be plotted with a unit length?
- ...
Further arguments to pass to
plot.phylo()
.
Value
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
.
Examples
# 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)