2013-01-06 15 views
5

varsayalım şöyle Verileri ve arsa vardır:Façeta etiketler

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) 

ben "tau = 0" ve "tau = 1", sırasıyla tau ile okumak faset etiketleri istiyorum Yunan sembolü olarak biçimlendirilmiş. another question'dan, etiketleyici label_parsed'u kullanarak tau harfini tek başına biçimlendireceğini biliyorum, ancak eşittir işareti bir şeyleri karmaşıklaştırıyor gibi görünüyor. İdeal bir çözüm, veriyi değiştirmemi (yani, bir faktör yapsın ve seviyelerini isimlendirin) gerektirmese de, her ne işe yarıyorsa onu kullanıyorum.

cevap

8

buradaki tau, seviyelerine göre facet_grid ile bir çözüm.

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

Düzenleme "tau 0 =" ve "tau = 1"

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

Edit2 ikinci değişken sigma

Bu çözüm bulmak almak için Özel bir etiketleyici tanımlayarak. Birisi (ggplot2 çocuklar) bana daha kolay bir çözüm vermesini umarım.

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

Güzel! Bu iki boyuta da genişletilebilir mi? Örneğin. Eğer ikinci bir değişken sigma'm varsa, facet_grid’i kullanarak yüzleşmek istiyorum. – mitchus

+2

@mitchus İkinci değişken eklemek için mys çözümünü güncelliyorum .. – agstudy

+0

Çok teşekkürler, harika çalışıyor! – mitchus