2013-01-06 4 views
5

Angenommen, ich habe die Daten und die Handlung, wie folgt:Facet Etiketten eine griechische Symbol denen

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) 

I würde die Facette Labels wie "tau = 0" und "tau = 1" sind zu lesen, mit tau als sein griechisches Symbol formatiert. Ich weiß aus another question, dass die Verwendung des Etikettierers label_parsed den Buchstaben Tau von selbst formatiert, aber das Gleichheitszeichen scheint die Dinge zu komplizieren. Eine ideale Lösung würde nicht erfordern, dass ich die Daten ändere (d. H. Mache tau zu einem Faktor und nenne seine Werte), aber ich werde alles nehmen, was funktioniert :)

Antwort

8

hier eine Lösung mit facet_grid ADN Indexierung der Tau durch seine Ebenen.

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

bearbeiten Um das "tau = 0" und "tau = 1"

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

EDIT2 zweite Variable Sigma

ich diese Lösung finden , indem Sie einen benutzerdefinierten Bezeichner definieren. Hoffe jemand (ggplot2 Leute) gebe mir eine einfachere Lösung.

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

Nice! Kann dies auch auf zwei Dimensionen ausgedehnt werden? Z.B. wenn ich eine zweite Variable sigma habe, die ich facettieren möchte, benutze 'facet_grid'. – mitchus

+2

@mitchus Ich aktualisiere mys-Lösung, um zweite Variable hinzuzufügen .. – agstudy

+0

Vielen Dank, funktioniert super! – mitchus