2010-09-03 16 views
10

मैं 3x2 लेआउट में एक छवि में 6 आंकड़े आउटपुट करने का प्रयास कर रहा हूं। मैं शीर्ष पंक्ति और नीचे दो पंक्तियों के बीच अतिरिक्त जगह रखना चाहता हूं। आर आर का उपयोग कर यह संभव है? मैंने पैरा और प्लॉट के लिए प्रलेखन को देखा है और एक उपयुक्त विकल्प नहीं लग रहा है।भूखंडों के सबसेट के बीच अतिरिक्त अंतर जोड़ें

a = rnorm(100,100,10) 
b = rnorm(100,100,10) 

par(mfrow=c(3,2), oma=c(1,1,1,1), mar=c(2,2,2,2)) 
hist(a) 
hist(b) 
plot(a,b) 
plot(a,b) 
plot(a,b) 
plot(a,b) 

यहाँ क्या है कि कोड आउटपुट:


alt text


यहाँ मैं यह उत्पादन करना चाहते हैं (

यहाँ कुछ उदाहरण कोड है मैंने इस कल्पना को संशोधित किया एक बाहरी संपादक में ई)। शीर्ष पंक्ति और नीचे पंक्तियों के बीच अतिरिक्त स्थान पर ध्यान दें।


alt text


उत्तर

9

layout() फ़ंक्शन आपका मित्र है। उदाहरण के लिए आप एक साजिश मैट्रिक्स

1 2 
3 4 
5 6 
7 8 

को परिभाषित करने और फिर तीसरे और चौथे के लिए में खाली भूखंडों डाल सकता है। या बस छः तक चिपके रहें और par पर नीचे अतिरिक्त अंतर जोड़ने के लिए कॉल करें।

+1

धन्यवाद - लेआउट() मेरे लिए नया है। ऐसा कुछ ऐसा लगता है जो मैं चाहता हूं: ए = लेआउट (मैट्रिक्स (सी (1,2,0,0,3,4,5,6), 4,2, बाई = TRUE), चौड़ाई = सी (1, 1), ऊंचाई = सी (4,1,4,4)) – chrisamiller

+2

हां, लेआउट अद्भुत और उपयोगी है। बच्चे इन दिनों कुछ भी नहीं बोलते हैं, लेकिन ggplot2 तो यह भूल जाता है :) अच्छी पकड़ 0 शून्य को भूखंडों को छोड़ने के लिए फिर से पकड़ती है, और आपके पास चौड़ाई और ऊंचाई के साथ बिल्कुल सही है। –

8

मैं तीन तरीके के बारे में सोच सकते हैं:

1) साजिश मार्जिन

स्थापित करने के लिए mar ग्राफिक पैरामीटर का उपयोग आप

के साथ मौजूदा मार्जिन प्राप्त कर सकते हैं
currmar <- par()$mar 

आप गीतों के लिए

par("mar"=c(5, 4, 4, 2)) 
साथ

के साथ नए मार्जिन सेट कर सकते हैं नीचे, बाएं, ऊपर और सही मार्जिन (?par देखें)

आप प्रत्येक भूखंड के लिए है, तो आप कर सकते हैं par करने के लिए कई कॉल कर सकते हैं केवल शीर्ष भूखंडों के लिए नीचे मार्जिन बदलें।

2) लेआउट का उपयोग करें एक असमान लेआउट ग्रिड (उदाहरण के लिए ?layout देख)

3) .svg या .pdf में भूखंड सहेजें उत्पन्न करने के लिए और उसके बाद भूखंडों को स्थानांतरित करने के इंकस्केप (या जो भी सॉफ्टवेयर आप की तरह) का उपयोग ।

4

मुझे लगता है कि mar के साथ जाने का तरीका यह है कि मैं इसे करूँगा। हालांकि, जैसा दिखता है, आप चाहते हैं कि सभी भूखंड समान हों। इसलिए, आपको ऊपर और नीचे प्रत्येक साजिश पर मार द्वारा उसी राशि को निकालने की आवश्यकता है।
आपके मामले में एक निम्न नंबरों का उपयोग कर सकते हैं:
1. पंक्ति: par(mar=c(7,4,4,2))
2. पंक्ति: par(mar=c(5,4,6,2))
3।पंक्ति: par(mar=c(7,4,4,2))

इस तरह सभी भूखंड एक ही ऊंचाई पर कब्जा करते हैं। Modifie पहले और तीसरे नंबर इस तरह से है कि वे इसे पूरा करने के लिए प्रत्येक साजिश के लिए समान हैं। हालांकि, चेतावनी पर: नीचे पंक्ति में भूखंडों के नीचे कुछ अतिरिक्त सफेद जगह है।

+0

अच्छा। मैंने पहले ही लेआउट() का उपयोग करके अपना समाधान कोड किया है, लेकिन यह भी काम करता। धन्यवाद। – chrisamiller

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