Another possibility (maybe more flexible) is to get the coordinates of the nodes and then call rect(). Something like:

tr <- rcoal(10)
plot(tr, "p", FALSE)
lastPP <- get("last_plot.phylo", envir = .PlotPhyloEnv)
x <- lastPP$xx[-(1:lastPP$Ntip)]
y <- lastPP$yy[-(1:lastPP$Ntip)]
s <- 0.3
par(xpd = TRUE)
for (h in s * c(-1.5, -.5, .5))
  for (v in s * c(-1.5, -.5, .5))
    rect(x + h, y + v, x + h + s, y + v + s, col=sample(colors(), 9))

with 's' the size of each cell of the heatmap, and the vectors 'h' and 'v' are calculated for a 3x3 matrix, so this can be generalized to different dimensions (even non-square). The options of rect() can be used (border, ...)

par(xpd = TRUE) is to make the heatmap at the root completely visible.

Best,

Emmanuel

Le 30/08/2018 à 12:45, Emmanuel Paradis a écrit :
Hi Jacob,

It is possible to call nodelabels() several times to do something similar to what you want by playing with the adj argument which is c(0.5, 0.5) by default (ie, the label is centered on the node). You can try this:

tr <- rcoal(5)
plot(tr, "p", FALSE)
for (h in c(0.4, 0.5, 0.6))
   for (v in c(0.4, 0.5, 0.6))
     nodelabels(pch=15, col=sample(colors(), size=1), cex=2, adj=c(h, v))

The difficulty is to find the 1st and 3rd values of h (horizontal) and v (vertical) and this will depend on the size of the device (and the value of cex of course). Maybe there's a way to automate these calculations.

Best,

Emmanuel

Le 30/08/2018 à 00:12, Jacob Berv a écrit :
Dear R-sig-phylo,

Does there exist a function to plot heatmaps at internal nodes of a tree? For example, to illustrate support values from different phylogenetic analyses — ie given a set of 3x3 matricies of support values for particular nodes.

It seems like there may be a partial (and definitely workable) solution here, using ggtree— https://rgriff23.github.io/2017/05/11/primate-phylogeny-ggtree.html <https://rgriff23.github.io/2017/05/11/primate-phylogeny-ggtree.html>, if such heatmaps are saved as raster images (about 1/2 way down). This may be the easiest solution, but it would be preferable to keep everything in vector format and all in R.

I guess I could do this by calling image() for the individual heatmaps and then just linking them up to nodes of interest in illustrator (but that feels like cheating).

Jake



    [[alternative HTML version deleted]]

_______________________________________________
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/


Pour nous remonter une erreur de filtrage, veuillez vous rendre ici : http://f.security-mail.net/408vx1yEbQu



_______________________________________________
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/






_______________________________________________
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/

Reply via email to