Description Usage Arguments Details Note Author(s) See Also Examples

`phydataplot`

plots data on a tree in a way that adapts to the
type of tree. `ring`

does the same for circular trees.

Both functions match the data with the labels of the tree.

1 2 3 4 |

`x` |
a vector, a factor, a matrix, or a data frame. |

`phy` |
the tree (which must be already plotted). |

`style` |
a character string specifying the type of graphics; can be abbreviated (see details). |

`offset` |
the space between the tips of the tree and the plot. |

`scaling` |
the scaling factor to apply to the data. |

`continuous` |
(used if style="mosaic") a logical specifying
whether to treat the values in |

`width` |
(used if style = "mosaic") the width of the cells; by default, all the available space is used. |

`legend` |
(used if style = "mosaic") the place where to draw the
legend; one of |

`funcol` |
(used if style = "mosaic") the function used to generate the colours (see details and examples). |

`...` |
further arguments passed to the graphical functions. |

The possible values for `style`

are “bars”, “segments”,
“image”, “arrows”, “boxplot”, “dotchart”, or “mosaic” for
`phydataplot`

, and “ring”, “segments”, or “arrows” for
`ring`

.

`style = "image"`

works only with square matrices (e.g.,
similarities). If you want to plot a DNA alignment in the same way
than `image.DNAbin`

, try `style = "mosaic"`

.

`style = "mosaic"`

can plot any kind of matrices, possibly after
discretizing its values (using `continuous`

). The default colour
palette is taken from the function `rainbow`

.
If you want to use specified colours, a function simply returning the
vector of colours must be used, possibly with names if you want to
assign a specific colour to each value (see examples).

For the moment, only rightwards trees are supported (does not apply to circular trees).

Emmanuel Paradis

`plot.phylo`

, `nodelabels`

,
`fancyarrows`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | ```
## demonstrates matching with names:
tr <- rcoal(n <- 10)
x <- 1:n
names(x) <- tr$tip.label
plot(tr, x.lim = 11)
phydataplot(x, tr)
## shuffle x but matching names with tip labels reorders them:
phydataplot(sample(x), tr, "s", lwd = 3, lty = 3)
## adapts to the tree:
plot(tr, "f", x.l = c(-11, 11), y.l = c(-11, 11))
phydataplot(x, tr, "s")
## leave more space with x.lim to show a barplot and a dotchart:
plot(tr, x.lim = 22)
phydataplot(x, tr, col = "yellow")
phydataplot(x, tr, "d", offset = 13)
ts <- rcoal(N <- 100)
X <- rTraitCont(ts) # names are set
dd <- dist(X)
op <- par(mar = rep(0, 4))
plot(ts, x.lim = 10, cex = 0.4, font = 1)
phydataplot(as.matrix(dd), ts, "i", offset = 0.2)
par(xpd = TRUE, mar = op$mar)
co <- c("blue", "red"); l <- c(-2, 2)
X <- X + abs(min(X)) # move scale so X >= 0
plot(ts, "f", show.tip.label = FALSE, x.lim = l, y.lim = l, open.angle = 30)
phydataplot(X, ts, "s", col = co, offset = 0.05)
ring(X, ts, "ring", col = co, offset = max(X) + 0.1) # the same info as a ring
## as many rings as you want...
co <- c("blue", "yellow")
plot(ts, "r", show.tip.label = FALSE, x.l = c(-1, 1), y.l = c(-1, 1))
for (o in seq(0, 0.4, 0.2)) {
co <- rev(co)
ring(0.2, ts, "r", col = rep(co, each = 5), offset = o)
}
lim <- c(-5, 5)
co <- rgb(0, 0.4, 1, alpha = 0.1)
y <- seq(0.01, 1, 0.01)
plot(ts, "f", x.lim = lim, y.lim = lim, show.tip.label = FALSE)
ring(y, ts, offset = 0, col = co, lwd = 0.1)
for (i in 1:3) {
y <- y + 1
ring(y, ts, offset = 0, col = co, lwd = 0.1)
}
## rings can be in the background
plot(ts, "r", plot = FALSE)
ring(1, ts, "r", col = rainbow(100), offset = -1)
par(new = TRUE)
plot(ts, "r", font = 1, edge.color = "white")
## might be more useful:
co <- c("lightblue", "yellow")
plot(ts, "r", plot = FALSE)
ring(0.1, ts, "r", col = sample(co, size = N, rep = TRUE), offset = -.1)
par(new = TRUE)
plot(ts, "r", font = 1)
## if x is matrix:
tx <- rcoal(m <- 20)
X <- runif(m, 0, 0.5); Y <- runif(m, 0, 0.5)
X <- cbind(X, Y, 1 - X - Y)
rownames(X) <- tx$tip.label
plot(tx, x.lim = 6)
co <- rgb(diag(3))
phydataplot(X, tx, col = co)
## a variation:
plot(tx, show.tip.label = FALSE, x.lim = 5)
phydataplot(X, tx, col = co, offset = 0.05, border = NA)
plot(tx, "f", show.tip.label = FALSE, open.angle = 180)
ring(X, tx, col = co, offset = 0.05)
Z <- matrix(rnorm(m * 5), m)
rownames(Z) <- rownames(X)
plot(tx, x.lim = 5)
phydataplot(Z, tx, "bo", scaling = .5, offset = 0.5,
boxfill = c("gold", "skyblue"))
## plot an alignment with a NJ tree:
data(woodmouse)
trw <- nj(dist.dna(woodmouse))
plot(trw, x.lim = 0.1, align.tip = TRUE, font = 1)
phydataplot(woodmouse[, 1:50], trw, "m", 0.02, border = NA)
## use type = "mosaic" on a 30x5 matrix:
tr <- rtree(n <- 30)
p <- 5
x <- matrix(sample(3, size = n*p, replace = TRUE), n, p)
dimnames(x) <- list(paste0("t", 1:n), LETTERS[1:p])
plot(tr, x.lim = 35, align.tip = TRUE, adj = 1)
phydataplot(x, tr, "m", 2)
## change the aspect:
plot(tr, x.lim = 35, align.tip = TRUE, adj = 1)
phydataplot(x, tr, "m", 2, width = 2, border = "white", lwd = 3, legend = "side")
## user-defined colour:
f <- function(n) c("yellow", "blue", "red")
phydataplot(x, tr, "m", 18, width = 2, border = "white", lwd = 3,
legend = "side", funcol = f)
## alternative colour function...:
## fb <- function(n) c("3" = "red", "2" = "blue", "1" = "yellow")
## ... but since the values are sorted alphabetically,
## both f and fb will produce the same plot.
## use continuous = TRUE with two different scales:
x[] <- 1:(n*p)
plot(tr, x.lim = 35, align.tip = TRUE, adj = 1)
phydataplot(x, tr, "m", 2, width = 1.5, continuous = TRUE, legend = "side",
funcol = colorRampPalette(c("white", "darkgreen")))
phydataplot(x, tr, "m", 18, width = 1.5, continuous = 5, legend = "side",
funcol = topo.colors)
``` |

```
Warning messages:
1: In .matchDataPhylo(x, phy) :
'x' has no (row)names: data are assumed to be in the same order than the tips of the tree
2: In .matchDataPhylo(x, phy) :
'x' has no (row)names: data are assumed to be in the same order than the tips of the tree
3: In .matchDataPhylo(x, phy) :
'x' has no (row)names: data are assumed to be in the same order than the tips of the tree
Warning message:
In .matchDataPhylo(x, phy) :
'x' has no (row)names: data are assumed to be in the same order than the tips of the tree
Warning messages:
1: In .matchDataPhylo(x, phy) :
'x' has no (row)names: data are assumed to be in the same order than the tips of the tree
2: In .matchDataPhylo(x, phy) :
'x' has no (row)names: data are assumed to be in the same order than the tips of the tree
3: In .matchDataPhylo(x, phy) :
'x' has no (row)names: data are assumed to be in the same order than the tips of the tree
Warning message:
In .matchDataPhylo(x, phy) :
'x' has no (row)names: data are assumed to be in the same order than the tips of the tree
Warning message:
In .matchDataPhylo(x, phy) :
'x' has no (row)names: data are assumed to be in the same order than the tips of the tree
```

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.