2017-11-29 19 views
2

상황 :LateX 표현식으로 ggplot 주석을 줄 바꿈

나는 텍스트 주석을 추가하고자하는 ggplot 다이어그램을 가지고 있습니다. 텍스트 주석 (일기 좋게 및 공간) 두 줄에 표시해야하며, 각 라인은 일부 텍 공식을 포함

library(tidyverse) 
library(latex2exp) 

ggplot(NULL, aes(c(-5,5))) + 
     geom_area(stat = "function", fun = dnorm, fill = "grey40", xlim = c(-2, 2)) + 
     annotate(geom = "text", label = TeX(paste("Distribution of $\\bar{x}$","\n","under $H_0$")), 
       x = -1, y = 0.3, 
       color = "red") 

문제 :

줄 바꿈 하지 쇼를 위로하지

. 선은 두 줄로 나뉘 지 않습니다. 성공없이 내가 paste(TeX(...))을 시도

parse = T :

작동하지 않았다 무엇

.

enter image description here

나는이 label = expression(paste("distribution of ", bar(x), "\n", "under H0"))here, 아니 성공을보고했습니다.

질문 :

내가 두 줄에 주석 (적색 텍스트)를 나눌 수있는 방법

?

답변

1

있습니다 (추가 정보를 원하시면 ?plotmath 참조) 대신 atopplotmath 표현을 사용할 수 텍스트가 눈에 띄는 수 있도록

ggplot(NULL, aes(c(-5,5))) + 
    geom_area(stat = "function", fun = dnorm, fill = "grey70", xlim = c(-2, 2)) + 
    annotate(geom = "text", label = expression(atop("Distribution of"~bar(x), "under"~H[0])), 
      x = -1, y = 0.3, 
      color = "red") + 
    theme_classic() 

내가이 예를 들어, 테마 및 색상을 변경했습니다.

enter image description here

UPDATE : 당신이 수직 간격으로 놀러해야하지만 주석에 관해서는, 여기, 하나 개의 옵션입니다. 먼저 exp을 작성하고 plotmath 표현식 목록을 작성하십시오. 그런 다음 annotate에서 y의 길이가 exp의 요소 수와 동일한 값의 벡터가되어야합니다. parse=TRUE은 그들을 expplotmath로 표현의 요소를 처리하고 분석 할 ggplot 알려줍니다 :

exp = list("Distribution of"~bar(x), 
      "under"~H[0], 
      hat(mu)~"is the mean") 

ggplot(NULL, aes(c(-5,5))) + 
    geom_area(stat = "function", fun = dnorm, fill = "grey70", xlim = c(-2, 2)) + 
    annotate(geom = "text", label = exp, 
      x = -1, y = seq(0.32,0.28,length=3), 
      size=3, color = "red", parse=TRUE) + 
    theme_classic() 

enter image description here

+0

덕분에, 그 작동합니다. 이 전략이> 2 행에도 적용될 수 있습니까? (p- 값 영역을 정의하는 것은 장황 할 수 있습니다 ...) –

+0

멋진, 많은 도움이됩니다. –