logo.on.black <- function(cleanup=FALSE) {
require(diversitree)
require(gridBase)
require(grImport)
cols <- rev(c("#7f1d80",
"#005083",
"#007eb9",
"#93c13a",
"#f8d50a",
"#ed7624",
"#ca171d"))
if ( !file.exists("beetles.eps") )
download.file("http://www.zoology.ubc.ca/prog/diversitree/beetles.eps",
"beetles.eps")
if ( cleanup )
on.exit(file.remove("beetles.eps"))
PostScriptTrace("beetles.eps")
file.remove("capturebeetles.eps")
beetles <- readPicture("beetles.eps.xml")
if ( cleanup )
on.exit(file.remove(c("beetles.eps", "beetles.eps.xml")))
set.seed(23)
phy <- tree.bd(c(.1, 0), max.taxa=17)
phy$edge.length <- phy$edge.length / max(branching.times(phy)) * .8
xy <- diversitree:::pp.node.coords(phy)
xy$xx <- xy$xx + .2
xy.seg <- diversitree:::pp.coords.phylogram(phy, xy)
n <- length(phy$tip.label)
xy.seg$theta0 <- (xy.seg$y0-1)/(n-1) * pi
xy.seg$theta1 <- (xy.seg$y1-1)/(n-1) * pi
xy.seg$r0 <- xy.seg$x0
xy.seg$r1 <- xy.seg$x1
## par(bg="black") # testing only -- leave for transparency...
par(mar=rep(0, 4))
plot.new()
plot.window(c(-1.3, 1.3), c(-.15, 1.2), asp=1)
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)
n <- beetles@summary@numPaths
xx <- sapply(seq_len(n), function(i) beetles[[i]]@summary@xscale)
beetles <- beetles[order(-xx[1,])]
w <- (xx[2,] - xx[1,])[order(-xx[1,])]
w <- w / max(w) * unit(.2, "native")
r <- 1.1
for ( i in seq_len(n) ) {
theta <- pi / n * (i - 1/2)
vp <- viewport(x=unit(r * cos(theta), "native"),
y=unit(r * sin(theta), "native"),
angle=(theta - pi/2) / (2 * pi) * 360)
pushViewport(vp)
grid.picture(colour.picture(beetles[[i]], cols[i]),
x=unit(.5, "npc"), y=unit(.5, "npc"),
just=c("centre", "centre"), width=w[i])
popViewport()
}
popViewport(3)
diversitree:::pp.segments.fan(phy, xy.seg, "white", 2, 1)
with(xy.seg[1,], diversitree:::arcs(theta0, theta1, r1, lwd=2,
n=200, col="white"))
text(0, .03, "diversitree", col="white",
cex=1.8/strwidth("diversitree"), adj=c(.525, 1))
}
logo.on.black.hardcopy <- function(filename, type="pdf") {
if ( missing(filename) )
filename <- sprintf("logo.%s", type)
require(Cairo)
r <- 140 / 200
w <- if (type == "png") 250 else 3
dev <- if (type == "png") CairoPNG else CairoPDF
CairoFonts(regular="Oswald")
dev(filename, width=w, height=w*r, bg="transparent")
on.exit(dev.off())
logo.on.black()
}
colour.picture <- function(picture, col) {
for ( j in seq_along(picture@paths) )
picture@paths[[j]]@rgb <- col
picture
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.