2010-03-30 7 views
25

के भीतर से एकाधिक ग्राफिक्स उत्पन्न ...मैं आर में एक समारोह ggplot ग्राफिक्स का उपयोग कर के भीतर से कई ग्राफिक्स खिड़कियों अंडे देने के लिए करना चाहते हैं एक अनुसंधान समारोह

testf <- function(a, b) { 
    devAskNewPage(TRUE) 
    qplot(a, b); 
    # grid.newpage(recording = TRUE) 
    dev.new() 
    qplot(a, a+a); 
    # grid.newpage(recording = TRUE) 
    dev.new() 
    qplot(b, b+b); 
} 

library(ggplot2) 

x <- rnorm(50) 
y <- rnorm(50) 
testf(x, y) 

लेकिन दोनों ही ने dev.new() और न ही ग्रिड। नया पृष्ठ() पिछले साजिश को फ्लश करना प्रतीत होता है।

मुझे पता है कि, आर में, सामान्य रूप से केवल अंतिम चीज का मूल्यांकन करते हैं, लेकिन मैं प्रक्रिया को बेहतर समझना चाहता हूं और किसी भी संभावित कामकाज के बारे में जानना चाहता हूं।

विचार?

+1

शायद आर अकसर किये गए सवाल 7.22 http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-do-lattice_002ftrellis-graphics-not-work_003f – rcs

+0

@ आरसीएस आपकी टिप्पणी प्रश्न का उत्तर देती है। इसे एक उत्तर के रूप में लिखें, ताकि इसे स्वीकार किया जा सके। –

+0

आरसीएस टिप्पणी से पता चलता है कि कोई एफएक्यू नहीं पढ़ता है;) – Marek

उत्तर

24

ग्रिड - जाली और ggplot2 में आधारित ग्राफिक्स फ़ंक्शन ग्राफ़ ऑब्जेक्ट बनाते हैं, लेकिन इसे प्रदर्शित नहीं करते हैं। ग्राफ वस्तु के लिए print() विधि वास्तविक प्रदर्शन पैदा करता है, जैसे कि,

print(qplot(x, y)) 

समस्या का हल।

R FAQ 7.22 देखें।

+1

आपकी सलाह सही है, लेकिन यह वास्तव में ग्रिड के साथ कुछ भी नहीं है - यह सिर्फ एक प्रोग्रामिंग शैली का निर्णय है। – hadley

+4

+1: यह मुझे 30 मिनट के लिए स्टंप किया था। यह गॉचा बहुत महत्वपूर्ण है कि यह पुन: उत्पन्न करने योग्य है: *** "वास्तविक ऑब्जेक्ट का उत्पादन करने के लिए ग्राफ़ ऑब्जेक्ट के लिए एक प्रिंट() विधि आवश्यक है। जब आप (ggplot2, ग्रिड इत्यादि) का उपयोग कमांड लाइन पर इंटरैक्टिव रूप से करते हैं, तो परिणाम स्वचालित रूप से मुद्रित होता है, लेकिन स्रोत() में या अपने कार्यों के अंदर आपको एक स्पष्ट प्रिंट() कथन की आवश्यकता होगी। "*** – smci

+0

http://cran.r-project.org/doc/FAQ/R-FAQ। एचटीएमएल # क्यों करते हैं-lattice_002ftrellis-ग्राफिक्स-नहीं-work_003f – marbel

संबंधित मुद्दे