2010-03-08 10 views
9

Estoy intentando sobrescribir el texto en algunas ggplot strips para incorporar caracteres griegos. Aquí hay algunos datos de muestra y la base de la trama.Letras griegas en texto de tira de ggplot

dfr <- data.frame(
    x = rep(1:10, times = 6), 
    y = runif(60), 
    fx = rep(c("foo", "bar"), each = 30), 
    fy = rep(c("alpha", "beta", "gamma"), each = 10, times = 2) 
) 

p <- ggplot(dfr, aes(x, y)) + geom_point() 

Mi primer intento de trazar no tiene griego en las etiquetas de la tira.

p + facet_grid(fy ~ fx) 

deduzco que se supone que debo añadir un argumento etiquetadora a facet_grid para anular el texto. Supuse que esto debería escupir una expresión para manejar los caracteres griegos, pero mi código arroja un error cuando se imprime el gráfico.

lbl <- function(variable, value) 
{ 
    if(variable == "fy") parse(text=as.character(value)) else value 
} 
p + facet_grid(fy ~ fx, labeller = lbl) 


Error in aperm(X, c(s.call, s.ans)) : 
    unimplemented type 'expression' in 'aperm' 

¿Cómo debo crear las etiquetas de tiras?

Respuesta

9

Prueba esto:

p + facet_grid(fy ~ fx, labeller = label_parsed) 
+0

veo que funciona esta respuesta, pero no puedo encontrar la manera. ¿De dónde viene label_parsed? No puedo encontrarlo en los documentos ggplot en línea. – kmm

+2

Se menciona brevemente en los documentos del paquete (http://cran.r-project.org/web/packages/ggplot2/index.html); Estoy de acuerdo en que podría estar mejor documentado, lo sabía por b/c. He visto a Hadley mencionarlo en algún momento. –

+0

Gracias - Lo veo ahora. Ese es un comando potencialmente muy útil. – kmm

3

publicar esto aquí ya que está relacionado:

Si desea que el nombre de la variable en sí, así como los niveles/valores de la variable a ser evaluada como una expresión (es decir, representa como si fueran látex), intente esto:

label_parseall <- function(variable, value) { 
    plyr::llply(value, function(x) parse(text = paste(variable, 
     x, sep = "=="))) 
} 

Ejemplo:

data <- data.frame(x = runif(10), y = runif(10), 
    gamma = sample(c("gamma[0]", "gamma[1]"), 10, rep = T)) 
ggplot(data, aes(x, y)) + geom_point() + facet_grid(~gamma, 
    labeller = label_parselabel) 

enter image description here

imagen en http://img709.imageshack.us/img709/1168/parseall.png

Cuestiones relacionadas