2010-03-08 19 views
9

Sto provando a sovrascrivere il testo in alcune strisce ggplot per incorporare caratteri greci. Ecco alcuni dati di esempio e la base per la trama.Lettere greche nel testo della striscia 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() 

Il mio primo tentativo in una trama non ha il greco nelle etichette della striscia.

p + facet_grid(fy ~ fx) 

ho capito che dovrei aggiungere un argomento etichettatrice per facet_grid per sovrascrivere il testo. Ho presunto che questo dovrebbe sputare un'espressione per gestire i caratteri greci, ma il mio codice genera solo un errore quando viene stampato il grafico.

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' 

Come devo creare le etichette di strisce?

risposta

9

Prova questo:

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

vedo che questa risposta funziona, ma non riesco a capire come. Da dove proviene label_parsed? Non riesco a trovarlo nei documenti ggplot online. – kmm

+2

Viene citato brevemente nel pacchetto doc (http://cran.r-project.org/web/packages/ggplot2/index.html); Sono d'accordo che potrebbe essere meglio documentato - lo sapevo solo b/c Ho visto Hadley parlarne a un certo punto. –

+0

Grazie - Lo vedo ora. Questo è un comando potenzialmente molto utile. – kmm

3

questo distacco qui dato che è legato:

Se si desidera che il nome della variabile stessa, nonché i livelli/valori della variabile da valutare come espressione (cioè riprodotto come se fossero lattice), provate questo:

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

Esempio:

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

immagine a http://img709.imageshack.us/img709/1168/parseall.png

Problemi correlati