In preparing for my recent phyloseminar, I created one new function and modified a few different existing functions. These have been posted online. [There is also a new package version that I haven't posted yet, but if you would like to try it out, you can download the source here. It contains these updates, and one other goodie in the new function fitBayes(), which I will talk about in a later post.]
The new function is the simple plotting function phenogram(), which is a lot like traitgram() in "picante", but can also take the internal node states or estimates, as well as the terminal states. The idea is really simple: we just project the phylogeny into a space defined by phenotype (in phenogram() this is the ordinate) and time (on the abscissa).
So for instance, if we try the following:
we might get something that looks like this (I have turned off the tip labels here since they are inconsequential in this example):
This is more or less the same as you'd get with traitgram in the picante package.
The interesting thing comes when we simulate under a more complex model, say BM with a trend, and then plot the phenogram containing the true tip states and ancestral character values. We can do this, say, as follows:
Other updates include:
1) plotSimmap() can now handle "multiPhylo" objects, in which case you just advance through the trees by hitting ENTER or clicking on the plotting window.
2) sim.rates() can now return the states for internal nodes as well as the tips of the tree.
3) brownieREML() now has a small update intended to correct the error reported here. (This fix may have to be refined further.)
As noted above, you can also a new test release of phytools containing these updates here and then install phytools from source.