2010-03-08 14 views
9

Yunanca karakterleri birleştirmek için bazı ggplot şeritlerinde metni geçersiz kılmaya çalışıyorum. İşte bazı örnek veriler ve arsa için temel.ggplot şerit metninde Yunan harfleri

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() 

Bir arsadaki ilk denememde şerit etiketlerinde Yunanca yok.

p + facet_grid(fy ~ fx) 

Ben metni geçersiz kılmak için facet_grid bir etiketleme argüman eklemek varsayıldığımı toplamak. Bunun, Yunanca karakterleri işlemek için bir ifade çıkarması gerektiğini farz ettim, ancak kodum grafik yazdırıldığında hata veriyor.

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' 

Şerit etiketlerini nasıl oluşturmalıyım?

cevap

9

bu deneyin:

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

de görüntü. Label_parsed nereden geliyor? Çevrimiçi ggplot belgelerinde bulamıyorum. – kmm

+2

Paket dokümanlarında kısaca bahsedilmiştir (http://cran.r-project.org/web/packages/ggplot2/index.html); Daha iyi bir şekilde belgelendirilebileceğine katılıyorum - sadece biliyordum ki Hadley bir noktada bahsetti. –

+0

Teşekkürler - şimdi görüyorum. Bu potansiyel olarak çok kullanışlı bir komuttur. – kmm

3

Bunlar birbirine beri burada bu gönderme: değişkene kendisi hem de değişkenin düzeyleri/değerlerinin ismini isterseniz

bir ifadesi olarak değerlendirilecek (bunlar, lateks sanki yani işlenmiş), bu deneyin:

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

Örnek:

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

Bu cevap çalışır, ama nasıl bilemiyorum görüyoruz http://img709.imageshack.us/img709/1168/parseall.png