2010-07-21 18 views
13

पर कोई पीडीएफ उत्पन्न नहीं हुआ है, मैं एक sweave रिपोर्ट बनाने की कोशिश कर रहा हूं जिसमें ggplot2 के साथ कुछ ग्राफिक्स शामिल हैं। हालांकि मैं लंबे समय के लिए कुछ पर्यावरण रहा हूँ - मैं तो बस यहाँ एक सरल .Rnw फ़ाइल का उपयोग है कि केवल कोड और साजिशsweave और ggplot2: सभी

\documentclass[a4paper]{article} 
\SweaveOpts{echo=FALSE} 
\usepackage{a4wide} 

    \begin{document} 

    \begin{figure}[htbp] 
    \begin{center} 
<<>>= 
library(ggplot2) 
x=rnorm(100) 
qplot(x) 

@ 
\caption{My Graph} 
\end{center} 
    \end{figure} 
\end{document} 

दुर्भाग्य ग्राफ बनाया नहीं दी जाती, मैं केवल एक दूषित .pdf मिल और .eps फ़ाइल। हालांकि मुझे एक अच्छी .tex फ़ाइल मिलती है जो ग्राफिक्स को छोड़कर काम पर दिखाई देती है। मैं इसे बनाने के लिए निम्न बुनियादी कोड का उपयोग करें:

Sweave("myfile.Rnw") 

मैं सिर्फ वेब कि पारदर्शिता और sweave/ggplot2 लेकिन कुछ भी है कि मदद की है हो सकता है के साथ समस्याओं चर्चा कर रहे थे पर कुछ पुराने पोस्ट पाया। मैंने आराम से पैकेज की भी कोशिश की, जिसने मदद नहीं की। बीटीडब्ल्यू, डीक्यूमर पैकेज पर कोई खबर है?

+1

पिछले कुछ दिनों से Decumar भारी विकास में है, और वास्तव में एक बिंदु के करीब हो सकता है जहां इसे जारी किया जा सकता है। – hadley

+0

यय! यह मेरा दिन बनाता है। मैं वास्तव में इसका परीक्षण करने की उम्मीद कर रहा हूं! –

उत्तर

19

qplot() ऑब्जेक्ट्स का उत्पादन करता है, ग्राफ़िक आउटपुट नहीं। ऐसा लगता है कि जब आप इसे चलाते हैं तो ऐसा लगता है, लेकिन ऐसा इसलिए है क्योंकि असाइनमेंट के बिना, आर स्वचालित रूप से qplot() के आउटपुट को प्रिंट कर रहा है। इसे स्वीवेव में एकीकृत करने के लिए, print() को लगभग qplot() पर लपेटें, या qplot() के आउटपुट को किसी चीज़ पर असाइन करें, फिर print() में लपेटें।

... 
<<fig = T, echo = F>>= 
library(ggplot2) 
x=rnorm(100) 
p <- qplot(x) 
print(p) 
@ 
... 

यह काम करना चाहिए। मैं हर समय अपने sweave दस्तावेज़ों में ggplot2 ग्राफिक्स का उपयोग करता हूं।

+0

thx आदमी। शुरुआत हमेशा सबसे कठिन है ... इस तरह से इस बारे में कभी सोचा नहीं क्योंकि मैंने अभी qplot() और ggsave का उपयोग किया था। –

3

इसे इसे print() पर पसीना में काम करने के लिए इसे लपेटना होगा।

1

दरअसल, जबकि पिछले दोनों उत्तरों सही हैं, आपकी समस्या कुछ और है।

आपको यह सुनिश्चित करने की ज़रूरत है कि संपूर्ण कोड ब्लॉक पृष्ठ के बाईं ओर है (कार्यों में iundentation के अलावा)। दोबारा, मुझे नहीं पता कि क्यों, लेकिन यह स्वीवे के लिए समस्याएं पैदा करता है।

यह सुनिश्चित करने के बाद कि पृष्ठ के बाईं ओर सभी कोड (और कोड कोड के लिए हेडर/पाद लेख) पृष्ठ के बाईं ओर (और एक प्रिंट स्टेटमेंट जोड़ना) तो आपका उदाहरण मेरे लिए काम करता है।

संयोग से, मैंने आज सीखा है कि आप अपने कोड के चारों ओर एक स्वर्ग दस्तावेज (जो मुझे पता नहीं था, और मुझे अधिक समय बचाएगा) में एक वातावरण बना सकता है। अच्छा पुराना स्टैक ओवरफ्लो, जब आप किसी प्रश्न का उत्तर देते हैं तो भी आपको कुछ नया सिखाते हैं!

उम्मीद है कि इससे मदद मिलती है।