X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=R%2Fplot.phylo.R;h=69f08660f1afa189e9461ed00f51b330d78baf71;hb=d7105238f98acefc5fc0ad6278a515e682453b8b;hp=e02ba3071726ffcd8e87a6f966aff4e786bfa0eb;hpb=3d25bf9304a2ec03022275950e4ccc720fc70675;p=ape.git diff --git a/R/plot.phylo.R b/R/plot.phylo.R index e02ba30..69f0866 100644 --- a/R/plot.phylo.R +++ b/R/plot.phylo.R @@ -1,8 +1,8 @@ -## plot.phylo.R (2010-01-04) +## plot.phylo.R (2011-02-11) ## Plot Phylogenies -## Copyright 2002-2010 Emmanuel Paradis +## Copyright 2002-2011 Emmanuel Paradis ## This file is part of the R-package `ape'. ## See the file ../COPYING for licensing issues. @@ -198,8 +198,6 @@ plot.phylo <- function(x, type = "phylogram", use.edge.length = TRUE, tmp <- if (show.tip.label) max(xx.tips + strWi/alp) else max(xx.tips) } x.lim[2] <- tmp - if (direction == "leftwards") xx <- x.lim[2] - xx #max(xx[ROOT] + tmp) -# else max(xx[1:Ntip] + tmp) } else x.lim <- c(1, Ntip) } else switch(type, "fan" = { if (show.tip.label) { @@ -227,6 +225,8 @@ plot.phylo <- function(x, type = "phylogram", use.edge.length = TRUE, if (show.tip.label) -1 - max(nchar(x$tip.label) * 0.03 * cex) else -1 } + ## mirror the xx: + if (phyloORclado && direction == "leftwards") xx <- x.lim[2] - xx if (is.null(y.lim)) { if (phyloORclado) { if (horizontal) y.lim <- c(1, Ntip) else { @@ -245,7 +245,6 @@ plot.phylo <- function(x, type = "phylogram", use.edge.length = TRUE, tmp <- if (show.tip.label) max(yy.tips + strWi/alp) else max(yy.tips) } y.lim[2] <- tmp - if (direction == "downwards") yy <- y.lim[2] - yy } } else switch(type, "fan" = { if (show.tip.label) { @@ -271,11 +270,13 @@ plot.phylo <- function(x, type = "phylogram", use.edge.length = TRUE, if (type == "radial") y.lim[1] <- if (show.tip.label) -1 - max(nchar(x$tip.label) * 0.018 * max(yy) * cex) else -1 } + ## mirror the yy: + if (phyloORclado && direction == "downwards") yy <- y.lim[2] - yy if (phyloORclado && root.edge) { if (direction == "leftwards") x.lim[2] <- x.lim[2] + x$root.edge if (direction == "downwards") y.lim[2] <- y.lim[2] + x$root.edge } - asp <- if (type %in% c("fan", "radial")) 1 else NA # fix by Klaus Schliep (2008-03-28) + asp <- if (type %in% c("fan", "radial", "unrooted")) 1 else NA # fixes by Klaus Schliep (2008-03-28 and 2010-08-12) plot(0, type = "n", xlim = x.lim, ylim = y.lim, ann = FALSE, axes = FALSE, asp = asp, ...) if (is.null(adj)) adj <- if (phyloORclado && direction == "leftwards") 1 else 0 @@ -332,6 +333,7 @@ plot.phylo <- function(x, type = "phylogram", use.edge.length = TRUE, "upwards" = segments(xx[ROOT], 0, xx[ROOT], x$root.edge), "downwards" = segments(xx[ROOT], yy[ROOT], xx[ROOT], yy[ROOT] + x$root.edge)) if (show.tip.label) { + if (is.expression(x$tip.label)) underscore <- TRUE if (!underscore) x$tip.label <- gsub("_", " ", x$tip.label) if (phyloORclado) @@ -357,9 +359,13 @@ plot.phylo <- function(x, type = "phylogram", use.edge.length = TRUE, srt <- 180*XY$axe/pi srt[as.logical(adj)] <- srt[as.logical(adj)] - 180 ## `srt' takes only a single value, so can't vectorize this: + ## (and need to 'elongate' these vectors:) + font <- rep(font, length.out = Ntip) + tip.color <- rep(tip.color, length.out = Ntip) + cex <- rep(cex, length.out = Ntip) for (i in 1:Ntip) - text(xx[i], yy[i], cex = cex, x$tip.label[i], adj = adj[i], - font = font, srt = srt[i], col = tip.color[i]) + text(xx[i], yy[i], cex = cex[i], x$tip.label[i], adj = adj[i], + font = font[i], srt = srt[i], col = tip.color[i]) } } if (type %in% c("fan", "radial")) { @@ -371,8 +377,12 @@ plot.phylo <- function(x, type = "phylogram", use.edge.length = TRUE, adj <- numeric(Ntip) adj[xx.tips < 0] <- 1 ## `srt' takes only a single value, so can't vectorize this: + ## (and need to 'elongate' these vectors:) + font <- rep(font, length.out = Ntip) + tip.color <- rep(tip.color, length.out = Ntip) + cex <- rep(cex, length.out = Ntip) for (i in 1:Ntip) - text(xx[i], yy[i], x$tip.label[i], font = font, cex = cex, + text(xx[i], yy[i], x$tip.label[i], font = font[i], cex = cex[i], srt = angle[i], adj = adj[i], col = tip.color[i]) } } @@ -431,7 +441,7 @@ phylogram.plot <- function(edge, Ntip, Nnode, xx, yy, horizontal, edge.color <- rep(edge.color, length.out = Nedge) edge.width <- rep(edge.width, length.out = Nedge) edge.lty <- rep(edge.lty, length.out = Nedge) - DF <- data.frame(edge.color, edge.width, edge.lty) + DF <- data.frame(edge.color, edge.width, edge.lty, stringsAsFactors = FALSE) color.v <- rep("black", Nnode) width.v <- rep(1, Nnode) lty.v <- rep(1, Nnode)