Nothing
# node.numbers.R
draw.node.numbers <- function(nn, ni, draw.shadow, type, branch,
Margin, xflip, yflip, cex,
main, sub, col.main, cex.main, col.sub, cex.sub,
xlim, ylim, node.xy, is.leaf, nodes,
node.labs, font, family, box.col, border.col, shadow.col,
under.cex, under.font, under.ygap, ygap,
split.labs, split.cex, split.font, split.family, split.box.col,
split.border.col, split.shadow.col,
nn.cex, nn.font, nn.family, nn.col, nn.box.col,
nn.border.col, nn.lty, nn.lwd, nn.round,
split.adj, split.space, split.yspace, split.yshift,
yshift, adj, space, yspace, shadow.offset,
nn.adj, nn.yshift, nn.space, nn.yspace, bg)
{
merge1 <- function(vec, split.vec)
{
vec <- recycle(vec, nodes)
split.vec <- recycle(split.vec, nodes)
split.vec[is.leaf] <- vec[is.leaf]
split.vec
}
#--- draw.node.numbers starts here ---
# The node numbers go on top of the node box or split box, whichever
# is higher. So we have to get the positions of those boxes first.
if(is.fancy(type) || type == TYPE2.all.under) {
all.labs <- node.labs
all.yshift <- yshift
all.cex <- cex
all.font <- font
all.family <- family
all.adj <- adj
all.space <- space
all.yspace <- yspace
} else {
all.labs <- merge1(node.labs, split.labs)
all.yshift <- merge1(yshift, split.yshift)
all.cex <- merge1(cex, split.cex)
all.font <- merge1(font, split.font)
all.family <- merge1(family, split.family)
all.adj <- merge1(adj, split.adj)
all.space <- merge1(space, split.space)
all.yspace <- merge1(yspace, split.yspace)
}
if(!is.invisible(shadow.col, bg)) {
# following prevents shadows on node numbers when not on their split boxes
want.interior.node.shadows <-
identical(shadow.col, split.shadow.col) ||
type == TYPE4.fancy.all || type == TYPE2.all.under
shadow.col <- recycle(shadow.col, nodes)
if(!want.interior.node.shadows)
shadow.col[!is.leaf] <- if(is.character(col)) par("bg") else 0
}
box <- get.boxes("default", all.labs, node.xy$x, node.xy$y,
xlim, ylim, nodes, branch,
Margin, xflip, yflip, main, sub,
col.main, cex.main, col.sub, cex.sub,
all.cex, all.font, all.family, all.adj,
all.yshift, box.col, border.col,
all.space, all.yspace,
ygap, bg,
do.init.plot=FALSE)
if(is.null(nn.cex)) # auto cex?
nn.cex <- .7 * min(all.cex)
strheight1 <- my.strheight("M", cex=nn.cex, font=nn.font, family=nn.family)
x <- (box$x2 + box$x1) / 2
if(ni) # ni's look better with a bit more whitespace
nn.yspace <- 1.5 * nn.yspace
nn.yshift <- nn.yshift - nn.yspace / 4 # TODO revisit but works for default case
y <- box$y2 + (nn.yshift + nn.yspace / 2) * strheight1 + strheight1 / 2
if(ni && nn)
nodes <- sprint("[%g] %g", 1:length(nodes), nodes)
else if(ni)
nodes <- sprint("[%g]", 1:length(nodes))
else
nodes <- sprint("%g", nodes)
nn.adj <- recycle(nn.adj, nodes)
nn.yshift <- recycle(nn.yshift, nodes)
nn.space <- recycle(nn.space, nodes)
nn.yspace <- recycle(nn.yspace, nodes)
boxes <- draw.boxes("default", draw.shadow,
nodes, list(x=x, y=y),
xlim, ylim, nodes, branch,
Margin, xflip, yflip, main, sub,
col.main, cex.main, col.sub, cex.sub,
nn.cex, nn.font, nn.family, nn.adj, nn.yshift,
nn.box.col, nn.border.col,
nn.lty, nn.lwd,
nn.space, nn.yspace, nn.round * strheight1,
under.cex, under.font, under.ygap, ygap,
shadow.col, shadow.offset, bg)
xy <- get.box.centers(boxes)
text(xy$x, xy$y,
nodes, cex=nn.cex, font=nn.font, family=nn.family, col=nn.col)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.