2013-02-04 6 views
12

Ich benutze schon seit einiger Zeit Knitr mit R-Basisgrafik und Tikz-Ausgabe und wollte stattdessen ggplot2 ausprobieren. Allerdings versagt diese minimal Beispiel eine Ausgabe mit knitr zu erzeugen 1.0.5:Ist die kontinuierliche Farbskala von ggplot2 inkompatibel mit dem tikzDevice von knitr?

\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} 

Stattdessen es scheitert mit der Meldung Error in UseMethod("depth"): no applicable method for 'depth' applied to an object of class "NULL". Wenn Sie den Code in R ausführen oder das PNG-Gerät auswählen, wird das erwartete Diagramm angezeigt. Wenn man die Farbästhetik oder das Factoring c auslässt, arbeitet man auch mit tikzDevice, so scheint die kontinuierliche Farbskala das Problem zu sein.

Gibt es irgendetwas, was ich falsch mache, oder ist das ein Fehler?

+3

klingt wie ein Fehler von 'tikzDevice'; Da es jetzt nicht aktiv gewartet wird, schlage ich vor, dass Sie für diesen speziellen Fall andere Geräte verwenden. –

+0

was schade, da ich meine Achsenbezeichnungen wirklich gerne von TeX gesetzt habe. Vielleicht schaue ich mir TikzDevice an, wenn ich dazu komme. – Taral

+0

@Yihui Ich bin gerade über denselben Fehler gestolpert. Irgendwelche Empfehlungen zu welchem ​​Gerät zu verwenden? – RoyalTS

Antwort

6

Ich kann tikzDevice mit Ihrem Code arbeiten, indem Sie dev.off() an das Ende des Codeblocks hinzufügen. Zum Beispiel:

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") 

funktioniert gut.

ich, dass auch bemerkt, wenn knit() durch eine aktive R-Sitzung auf dem (ursprünglichen) Code aufrufen, ich mit einem aktiven tikz Gerät links am ...

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

danke, du hast mich gerade gerettet! Wie um alles in der Welt hast du das herausgefunden? keine Ahnung warum/was passiert? – fabians

2

Das war ein bug beschlossen, jetzt in die Entwicklungsversion 0.10 von tikzDevice, die bald CRAN treffen wird. Bis dahin, Installation mit

devtools::install_github("yihui/tikzDevice")