2013-02-04 2 views
12

나는 지금 R 기본 그래픽과 tikz 출력으로 knitr을 사용 해왔다. 대신 ggplot2을 시험해보고 싶었다. 그러나,이 예에서는 최소한 knitr 1.0.5로 출력을 생성하기 위해 실패ggplot2의 연속 색상 스케일이 knitr의 tikzDevice와 호환되지 않습니까?

\documentclass{article} 
\begin{document} 
<<dev = 'tikz'>>= 
library(ggplot2) 
d = data.frame(a = c(1, 2, 3), b = c(4, 5, 6), c = c(7, 8, 9)) 
ggplot(d, aes(a, b, color = c)) + geom_point() 
@ 
\end{document} 

대신 메시지 Error in UseMethod("depth"): no applicable method for 'depth' applied to an object of class "NULL" 실패. R에서 코드를 실행하거나 png 장치를 선택하면 예상 그래프가 표시됩니다. 컬러 미학을 생략하거나 c을 팩터링하는 것은 tikzDevice에서도 작동하므로 연속 컬러 스케일이 문제인 것처럼 보입니다.

내가 잘못하고있는 것이 있거나 버그입니까?

+3

는 'tikzDevice'의 버그처럼 보입니다.; 현재 적극적으로 유지 관리되지는 않는다는 점을 고려하여이 특정 사례에 다른 장치를 사용하는 것이 좋습니다. –

+0

정말 축축한데, 축 레이블을 TeX로 타이프 화하는 것이 좋기 때문입니다. 어쩌면 나는 tikzDevice에 대해 살펴볼 것이다. – Taral

+0

@Yihui 방금 같은 버그를 발견했습니다. 사용할 장치에 대한 권장 사항은 무엇입니까? – RoyalTS

답변

6

코드 블록의 끝에 dev.off()을 추가하여 tikzDevice에 코드를 사용할 수 있습니다. 예 :

cat(" 
    \\documentclass{article} 
    \\begin{document} 
    <<dev = 'tikz'>>= 
    library(ggplot2) 
    d = data.frame(a = c(1, 2, 3), b = c(4, 5, 6), c = c(7, 8, 9)) 
    ggplot(d, aes(a, b, color = c)) + geom_point() 
    dev.off() 
    @ 
    \\end{document} 
", "test_works.Rtex") 
knit("test_works.Rtex") 

잘 작동합니다.

나는 또한 (원본) 코드에 활성 R 세션을 통해 knit()를 호출하는 경우, I가 활성 tikz 장치와 왼쪽입니다 것으로 나타났습니다

...

이 이제 해결 bug이었다
cat(" 
    \\documentclass{article} 
    \\begin{document} 
    <<dev = 'tikz'>>= 
    library(ggplot2) 
    d = data.frame(a = c(1, 2, 3), b = c(4, 5, 6), c = c(7, 8, 9)) 
    ggplot(d, aes(a, b, color = c)) + geom_point() 
    @ 
    \\end{document} 
    ", file = "test_fails.Rtex") 
knit("test_fails.Rtex") 
dev.list() 
+0

감사합니다. 방금 저를 구해 줬습니다! 그걸 어떻게 알아 냈어? 어떤 아이디어가 왜/어떤 일이 일어날까요? – fabians

2

개발 버전 0.10은 tikzDevice이며 곧 CRAN에 충돌합니다. 그때까지, 사용하여 설치

devtools::install_github("yihui/tikzDevice") 
관련 문제