2013-01-06 13 views
5

Supponiamo che io ho i dati e la trama come segue:etichette Facet che coinvolgono un simbolo greco

mydata = data.frame(x=rnorm(4), y=runif(4), tau=c(0,0,1,1)) 
ggplot(mydata) + geom_point(aes(x=x, y=y)) + facet_wrap(~ tau) 

Vorrei le etichette di sfaccettatura per leggere "tau = 0" e "tau = 1", rispettivamente, con tau formattato come simbolo greco. So da another question che l'utilizzo dell'etichettatrice label_parsed formatta la lettera tau da sola, ma il segno di uguale sembra complicare le cose. Una soluzione ideale non mi richiederebbe di modificare i dati (ad esempio, fare tau un fattore e denominarne i livelli), ma prenderò qualsiasi cosa :)

risposta

8

qui una soluzione con facet_grid e indicizzazione del tau per i suoi livelli.

mydata = data.frame(x=rnorm(4), y=runif(4), tau=c(0,0,1,1)) 
ggplot(mydata) + geom_point(aes(x=x, y=y)) + 
     facet_grid(~ tau,labeller = label_bquote(tau^.(x))) 

enter image description here

Modifica per ottenere il "tau = 0" e "tau = 1"

facet_grid(~ tau,labeller = label_bquote(tau == .(x))) 

Edit2 secondo sigma variabile

Trovo questa soluzione , definendo un'etichettatrice personalizzata. Spero che qualcuno (ragazzi ggplot2) mi dia una soluzione più semplice.

enter image description here

my.label_bquote <- function (expr1 = (tau == .(x)),expr2 = (sigma == .(x))) 
{ 
    quoted1<- substitute(expr1) 
    quoted2 <- substitute(expr2) 
    function(variable, value) { 
     value <- as.character(value) 
     if(variable == 'tau') 
     lapply(value, function(x) 
       eval(substitute(bquote(expr1, list(x = x)),list(expr1 = quoted1)))) 
     else 
     lapply(value, function(x) 
       eval(substitute(bquote(expr2, list(x = x)),list(expr2 = quoted2)))) 
    } 
} 

mydata = data.frame(x=rnorm(4), y=runif(4), tau=c(0,0,1,1),sigma=c(2,2,3,3)) 
ggplot(mydata) + geom_point(aes(x=x, y=y)) + 
    facet_grid(sigma ~ tau,labeller = my.label_bquote()) 
+0

Nizza! Questo può anche essere esteso a due dimensioni? Per esempio. se ho una seconda variabile sigma voglio sfaccettare, usando 'facet_grid'. – mitchus

+2

@mitchus Aggiorno la soluzione mys per aggiungere la seconda variabile .. – agstudy

+0

Grazie mille, funziona benissimo! – mitchus

Problemi correlati