r ggplot2 direct-labels

¿Cómo puedo configurar box.color en directlabels "draw.rects"?



ggplot2 direct-labels (2)

Esto parece ser un truco, pero funcionó. Acabo de redefinir la función draw.rects , ya que no podía ver cómo se le pasaban los argumentos debido a la forma torpe que usa DirectLABEL para sus funciones. (Muy parecido a ggplot-functions. Nunca me acostumbré a que las funciones sean valores de caracteres):

assignInNamespace( ''draw.rects'', function (d, ...) { if (is.null(d$box.color)) d$box.color <- "red" if (is.null(d$fill)) d$fill <- "white" for (i in 1:nrow(d)) { with(d[i, ], { grid.rect(gp = gpar(col = box.color, fill = fill), vp = viewport(x, y, w, h, "cm", c(hjust, vjust), angle = rot)) }) } d }, ns=''directlabels'') dlp <- direct.label(p, "angled.boxes") dlp

Aquí está mi ejemplo de trabajo:

library(ggplot2) library(directlabels) # ver 2014.6.13 via r-forge DF <- expand.grid(z = seq(1, 3001, by=10), k = seq(from=0.5, to=5, by=0.25)) # Defines the function value for each z-k combination DF$dT <- with(DF, -0.07 * z * (1/2.75 - 1/k)) p <- ggplot(DF, aes(x = z, y = k, z = dT)) + theme_bw() + stat_contour(aes(colour=..level..), breaks=c(seq(from=-40, to=0, by=5), c(seq(from=5, to=150, by=10)))) angled.boxes <- list("far.from.others.borders","calc.boxes","enlarge.box","draw.rects") direct.label(p, "angled.boxes")

Que se ve así:

Quiero convertir el color del borde de la caja de etiquetas en "blanco", pero no veo cómo hacerlo. En las NOTICIAS para el paquete, está escrito esto:

2.5 --- 6 de abril de 2012

draw.rects con color configurable, negro predeterminado.

Y viendo como "angled.boxes" es una lista que comprende:

angled.boxes <- list("far.from.others.borders","calc.boxes","enlarge.box","draw.rects")

Supongo que es posible, pero ¿cómo?


También tengo una respuesta del autor del paquete, Toby Hocking. Cualquiera de estos funcionará:

my.dl <- list(dl.trans(box.color="red"),"draw.rects") direct.label(p, list("far.from.others.borders","calc.boxes", "enlarge.box", "my.dl"))

O (atajo)

my.dl <- list(box.color="red", "draw.rects") direct.label(p, list("far.from.others.borders","calc.boxes", "enlarge.box", "my.dl"))