Monday, May 27, 2013

Circular trees in densityMap and contMap

In an earlier post I showed how plotSimmap(...,type="fan") could be used to plot densityMap or contMap style plots using the object of class "densityMap" or "contMap" returned invisibly by each function, respectively.

Well, I have now build this directly into contMap & densityMap (and the S3 generic plot for objects of class "densityMap" and "contMap"). Check it out:

> require(phytools)
Loading required package: phytools
> packageVersion("phytools")
[1] ‘0.2.76’
> contMap(tree,x,type="fan",fsize=0.9)
> X<-densityMap(mtrees,outline=TRUE,fsize=0.9)
sorry - this might take a while; please be patient

Argh - way too cluttered. Let's try a circular tree instead!

> class(X)
[1] "densityMap"
> plot(X,type="fan",fsize=0.9,outline=TRUE)

Since these updates involved changes to a number of methods in phytools - the best bet is to update to the latest non-CRAN phytools build (phytools 0.2-76).

That's it.


  1. Hello Liam, greetings from Costa Rica
    I've been trying to run a fan tree, circular tree, with features, but as a result I get the circular tree but without the species label and I get the following error:
    Error in rep(" ", offset) : invalid 'times' argument

    I copy the tree code
    tree<- tree3
    svl<- setNames(dat[,1], row.names(dat))
    obj<-setMap(contMap(tree,svl, plot = F), invert=T)
    plot(obj,fsize=c(0.4,0.8),outline=FALSE,lwd=c(1,4),leg.txt="Digestibility (mod mix)", type="fan")

    Do you know what the problem might be? I have the latest version of R and updated all the packages
    Thank you very much.

    1. This was a bug in the previous version of phytools, but has already been fixed on CRAN.

  2. Hi Liam,

    Thank you so much for the very useful phytools package.

    I'm also having the same problem as Jorge. I can do this plot

    tip.labels=FALSE,fsize=1.5,col=cols,scale=0.004, border='lightgrey',width = 1)

    However, when I specified that I want a fan tree, it doesn't work

    tip.labels=FALSE,fsize=1.5,col=cols,scale=0.004, border='lightgrey',width = 1, type="fan")

    and throws an error:

    Error in rep(" ", offset) : invalid 'times' argument

    I have looked for this error in the internet, but I haven't found useful information for this specific case.

    Thank you so much in advance!


    1. Wendy. This bug is from a previous phytools version & should already be fixed on CRAN.

  3. @Valenatura and Jorge, you can solve this problem by adding the argument 'offset=1' to your plot() or contMap() call. @Liam, I guess this is a bug in plotFan, but I cannot figure out why it doesn't work when there is the if(is.null(offset)) offset <- 1 line in there that should overcome it.

    1. Have you tried updating phytools from CRAN? I believe this bug has been fixed.


Note: due to the very large amount of spam, all comments are now automatically submitted for moderation.