2010-03-08 8 views
9

그리스 문자를 사용하기 위해 일부 ggplot 스트립의 텍스트를 덮어 쓰려고합니다. 다음은 샘플 데이터와 플롯의 기준입니다.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() 

플롯에서의 첫 번째 시도는 스트립 라벨에 그리스어가 없습니다.

p + facet_grid(fy ~ fx) 

나는 내가 텍스트를 대체 할 facet_grid에 라벨러 인수를 추가하기로되어있어 것을 수집합니다. 이 그리스 문자를 처리하는 식 밖으로 침을합니다 가정합니다,하지만 내 코드를 그냥 그래픽이 인쇄 될 때 오류가 throw됩니다.

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' 

스트립 라벨은 어떻게 작성해야합니까?

답변

9

이 시도 :

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

에서 이미지. label_parsed는 어디에서 왔습니까? 온라인 ggplot 문서에서 찾을 수 없습니다. – kmm

+2

패키지 docs (http://cran.r-project.org/web/packages/ggplot2/index.html)에서 간략하게 언급됩니다. 나는 그것이 더 잘 문서화 될 수 있다는데 동의한다 - 나는 단지 그것을 알았다. b/c 나는 Hadley가 어느 시점에서 언급했음을 보았다. –

+0

고마워요. 지금 보입니다. 이것은 잠재적으로 매우 유용한 명령입니다. – kmm

3

가 관련이 있기 때문에 여기를 게시 : 당신은 변수 자체뿐만 아니라 변수의 수준/값의 이름을 원하는 경우

표현으로 평가 될 (그들은 라텍스 것처럼 즉 렌더링)이 시도 :

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

예 :

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

나는이 대답이 작동하지만이 방법을 알아낼 수 없습니다 것을 볼 http://img709.imageshack.us/img709/1168/parseall.png