2013-02-04 31 views
12

मैं थोड़ी देर के लिए आर बेस ग्राफिक्स और टिकज़ आउटपुट के साथ बुनाई का उपयोग कर रहा हूं, और इसके बजाय ggplot2 को आजमा देना चाहता था। बहरहाल, यह कम से कम उदाहरण knitr 1.0.5 के साथ किसी भी उत्पादन का उत्पादन करने में विफल रहता:क्या ggplot2 का सतत रंग स्केल knitr's 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" साथ विफल रहता है। आर में कोड निष्पादित करना या पीएनजी डिवाइस चुनने से अपेक्षित ग्राफ होगा। कलर सौंदर्यशास्त्र या फैक्टरिंग c को टिमज़डेविस के साथ काम करना, इसलिए निरंतर रंग स्केल समस्या प्रतीत होता है।

क्या कुछ भी गलत है, या यह एक बग है?

+3

'tikzDevice' की एक बग की तरह लगता है; यह देखते हुए कि यह अब सक्रिय रूप से बनाए रखा नहीं गया है, मेरा सुझाव है कि आप इस विशिष्ट मामले के लिए अन्य उपकरणों का उपयोग करें। –

+0

क्या करुणा है, क्योंकि मुझे वास्तव में टीएक्स द्वारा मेरी अक्ष लेबल टाइपसेट पसंद है। हो सकता है कि जब मैं इसके चारों ओर घूमूं तो मैं 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") 

ठीक काम करता है।

मैं भी देखा है कि अगर (मूल) कोड पर एक सक्रिय अनुसंधान सत्र के माध्यम से knit() बुला, मैं एक सक्रिय tikz डिवाइस के साथ छोड़ दिया हूँ ...

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

यह एक bug, अब में हल था tikzDevice का विकास संस्करण 0.10, जो जल्द ही सीआरएएन को मार देगा। तब तक,

devtools::install_github("yihui/tikzDevice")