2012-09-20 3 views
15

annotate()을 사용하여 ggplot2 플롯에 라텍스 텍스트를 추가하고 싶습니다. expression()을 사용하면 축 레이블에 라텍스를 추가하는 경우 here으로 설명한 것처럼 작동하지 않는 것 같습니다. 재치에 :라텍스로 ggplot을() 덧붙이는 방법

# Use expression() to create subscripted text 
p <- ggplot(mpg, aes(x=cty, y=hwy)) + geom_point() + 
    scale_x_continuous(expression(text[subscript])) 

# But expression() in annotate adds nothing to the plot 
p + annotate("text", x=10, y=40, label=expression(text[subscript])) 

# Passing regular text to annotate works fine 
p + annotate("text", x=10, y=40, label="foo") 

expression의 다른 ggplot 기능보다는 annotate 다르게 취급? 그리고 어떻게 라텍스에 주석을 달 수 있습니까?

+0

당신은'tikzDevice' 패키지를보실 수 있습니다 ... –

+0

더 이상 적극적으로 관리되지 않는 것으로 보입니다. (그러나 여전히 잠재적으로 유용하다!) –

+1

내 이해는 여전히 널리 사용되고 기능적이지만 CRAN/R CMD 검사 규칙이 엄격하여 고아원의 현재 상태에있다. R-forge에서 마지막으로 수정되었다. 2012 ... –

답변

13

당신은 expression없이 parse 인수를 사용할 수 있습니다

p + annotate("text", x=10, y=40, label="text[subscript]", parse=TRUE) 
+0

'label = expression'을 사용하면 비정상적인 행동이 있는지 여부를 확인할 수 있습니까? (text [subscript]), parse = TRUE)'? (아직 0.9.2로 업그레이드하지 않았습니다 ...) – joran

+0

그래, 그게 싫어. –

+0

Ok ... 오늘 아침에 조금 비틀 거 렸고, 처음 실수로 그렇게했습니다. 전에 R에서 그런 종류의 응답을 보지 못했습니다. 기묘한. – joran

4

tikzDevice 패키지는 다시 CRAN에 (2015년 11월 게시 된 최신 버전 0.9)입니다.

tikz을 사용하면 LaTeX을 완전히 설치해야합니다. LaTeX 문서에서 knitr을 통해하는 것이 가장 쉽습니다 (청크 옵션에서 dev="tikz"로 설정). 그러나이 도구를 사용하여 독립형 그림을 만들 수도 있습니다. 아이러니하게도,이 문제의 가장 어려운 부분은 \textsubscript 명령에 대한 추가 LaTeX의 패키지 (fixltx2e)이 필요한 텍스트 첨자, ...

library(tikzDevice) 
## add a package to the defaults 
options(tikzLatexPackages= 
      c(getOption("tikzLatexPackages"),"\\usepackage{fixltx2e}")) 
tikz("tikz.tex",standAlone=TRUE) 
library("ggplot2"); theme_set(theme_bw()) 
p <- ggplot(mpg, aes(x=cty, y=hwy)) + geom_point() + 
    scale_x_continuous(name="text\\textsubscript{subscript}") 
p + annotate("text", x=10, y=40, label="text\\textsubscript{subscript}") 
dev.off() 

system("pdflatex tikz.tex") 

enter image description here

14

latex2exp를라는 R 패키지가되어지고 한 도움이 될 수 있습니다.

library(latex2exp) 
library(ggplot2) 

qplot(1, "A")+ 
    ylab(TeX("Formula: $\\frac{2hc^2}{\\lambda^\\beta}$"))+ 
    xlab(TeX("$\\alpha$")) 

Example

더 많은 예제가 this vignette에서 찾을 수 있습니다 : 그것은이 예에서와 같이 달러 기호 $로 둘러싸인 일부 LaTeX의 표현을 받아들이는 기능 TeX 있습니다.

+5

귀하의 예제는 레이블에 대해 작동하지만 주석에 대한 질문이 있습니다. 귀하의 예제는 나를 위해 주석 레이어에서 작동하지 않지만 output = 'character'를 지정하고 'parse = TRUE'를 주석 호출에 추가하면 주석이 호출됩니다. 주석 '(geom ='텍스트 ', x = 3, y = 3, 레이블 = Tex ("$ \ 모자 {Y} = B_0 + B_1X_1", 출력 ='문자 '), 구문 분석 = ' – svannoy

관련 문제