I recently put a new version of phytools on
CRAN (phytools 0.6-99).
The last CRAN phytools release was 28 September 2018, so naturally there were
quite a few updates.
The following is a non-comprehensive list:
An
update
to the function dotTree to include column labels.
A totally new function fitmultiMk to fit a multi-rate Mk model
to discrete character data on the tree
(here).
The MCCR test for Pybus & Harvey's γ statistic when taxon sampling is incomplete
(1,
2). This used to
be in Dan Rabosky's package laser, but since laser is no longer available
I thought I'd implement it in phytools.
Another
totally new
function, fitpolyMk, to fit an Mk model to discrete character data
with polymorphism.
A
new S3
plot method for fitpolyMk.
A new function for
phylogenetic
imputation with multivariate continuous trait data (phylo.impute).
An
update
to phylo.to.map to permit more than one observation per tip in the tree.
(Also see:
1,
2,
3).
A simple user-requested update to fancyTree for
type="extinction"
(here).
A small
fix
to the function plotTree.wBars for fan-style trees.
Various
updates to the phytools function mcmcMk for Bayesian MCMC analysis
of the Mk model of evolution for discete character traits.
A new multi2di registered S3 method for the "simmap" object
class (as well as di2multi and multi2di methods for other
object classes too - such as "contMap" and "densityMap" object:
here).
Several
new S3
methods for the "evol.rate.mcmc" object class.
Updates
to the 'phylogenetic scatterplot matrix' method of fancyTree (and also
separation of the method to its own function: phyloScattergram).
Some useful updates & fixes to the function
geo.legend,
as well as an entirely new function, geo.palette. (Also
here.)
Various
updates
to ltt95.
Finally, a
small but
non-trivial update to cophylo to permit co-phylogenetic plotting
when one or both trees have duplicate tip labels.
For all updates, check out a complete list of commits on the phytools
GitHub page. This list
is long & include lots of things that haven't been mentioned above, such as new object
classes and methods.
Here's an example of
plotting
species distributions with a "phylo.to.map" object:
obj
## Object of class "phylo.to.map" containing:
##
## (1) A phylogenetic tree with 8 tips and 7 internal nodes.
##
## (2) A geographic map with range:
## -33.75N, 5.27N
## -74.01W, -29.36W.
##
## (3) A table containing 65 geographic coordinates (may include
## more than one set per species).
##
## If optimized, tree nodes have been rotated to maximize alignment
## with the map when the tree is plotted in a rightwards direction.
plot(obj,direction="rightwards",colors=sapply(cols,
make.transparent,0.4),
pts=FALSE,ftype="off",cex.points=c(0,0),
ftype="off",lwd=c(3,1))
for(i in 1:Ntip(obj$tree)){
ii<-which(rownames(obj$coords)==obj$tree$tip.label[i])
polygon(obj$coords[ii,2:1],
col=make.transparent(cols[obj$tree$tip.label[i]],0.8),
border="darkgrey")
}
