2017-09-27 6 views
1

일부 ggplot 패싯 레이블이 아닌 일부에 표현식을 포함하려고합니다. 이 question은 이전에 요청 및 해결되었지만 특정 사례에 맞게 작동하지는 않습니다.labeller = label_parsed를 사용하여 일부 ggplot 패싯 레이블에 표현식을 포함시키는 방법?

Error in parse(text = as.character(values)) : :1:8: unexpected symbol 1: Capped brood ^

는 내 실수가 무엇인지 알려주세요 그리고 내가면 라벨의 제곱근 기호를 그릴 수있는 방법 :

나는 다음과 같은 오류가 발생합니다.

데이터 :

df <- structure(list(t0 = c(122.883911266139, 169.48220216013, 121.371211764444, 
          170.60152096912, 122.001873322486, 151.578850452806, 120.458523959951, 
          149.550874882101, 3411.77083333332, 8846.04166666666, 3329.0625, 
          8866.04166666666, 5931.79935833674, 4554.92435833674, 5618.75, 
          5387.63269167007), Treatment = structure(c(1L, 1L, 2L, 2L, 1L, 
                     1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L), .Label = c("A", 
                                   "B"), class = "factor"), Trait = structure(c(2L, 2L, 2L, 2L, 
                                              2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Capped brood cells", 
                                                             "Colony strength", "sqrt(\"Colony weight (g)\")"), class = "factor"), 
        Timepoint = structure(c(1L, 2L, 1L, 2L, 3L, 4L, 3L, 4L, 1L, 
              2L, 1L, 2L, 3L, 4L, 3L, 4L), .Label = c("2013 Before", "2013 After", 
                        "2014 Before", "2014 After"), class = "factor")), .Names = c("t0", 
                                        "Treatment", "Trait", "Timepoint"), row.names = c(NA, 16L), class = "data.frame") 

코드 :

지금까지 내가 볼 수있는 코드 두 가지 문제가있다
df$Trait = as.factor(df$Trait) 
levels(df$Trait) <- c("Capped brood cells", "Colony strength", expression(sqrt("Colony weight (g)"))) 

dodge <- position_dodge(width=0.9) 
ggplot(df, aes(x = Timepoint, y = t0, fill = Treatment))+ 
    geom_bar(position = dodge, stat="identity", color = "black")+ 
    facet_grid(Trait~., scales = "free_y", labeller = label_parsed) 
+1

첫 번째 수준의 값이 아닌 문제의 원인이 발현 될 것으로 보인다 : 다음에 당신의 '코드'블록의 첫 두 줄을 변경

정확한 그래프를 생성합니다. 나는'label_parsed'가 라벨에서 공백을 허용하지 않는다고 생각합니다. 이 값을 변경하면 올바른 표현이 인쇄됩니다. – timfaber

답변

1

. 첫째, 레이블을 구문 분석 할 때 ~ 문자로 공백을 대체해야합니다 (이 또한 링크 된 SO 질문에서 언급되었습니다). 이것은 당신이 보는 오류의 원인입니다; 파서는 첫 번째 요소 수준에서 '뚜껑이있는'과 '짝짓기'사이의 공백을 처리 할 수 ​​없습니다. 둘째, 데이터에 두 개만 나타나면 세 가지 요소 수준을 지정합니다.

df$Trait = as.factor(as.character(df$Trait)) 
levels(df$Trait) <- c("Capped~brood~cells", expression(sqrt("Colony weight (g)"))) 
+0

프롬프트 응답을 보내 주셔서 감사합니다. 나는 더 조심스럽게 링크 된 대답을 읽었어야했고, 여기에 입력 할 더 작은 data.frame을 만들 때 하나의 레벨을 삭제하는 것을 잊었다. –