आर

2012-06-25 10 views
8

में बहु-साजिश पैनलों में भूखंडों के बीच या बीच में कैसे मतदान करें यदि मेरे पास एक ही पैनल में कई भूखंड हैं, तो मैं एक से अधिक प्लॉट क्षेत्र में जाने वाले टेक्स्ट एनोटेशन डाल सकता हूं या जो बीच में जाता है साजिश क्षेत्रों। मुझे यकीन है कि ऐसा करने का एक तरीका होना चाहिए, लेकिन मुझे यह जानने में कुछ मदद चाहिए कि कैसे।
यहाँ एक पैनल पर चार भूखंडों बनाने के लिए कुछ नकली डेटा है:आर

x1 = rnorm(100) 
x2 = rnorm(100) 
x3 = rnorm(100) 
x4 = rnorm(100) 

par(mfrow=c(2,2)) 
hist(x1, xlab="", main="Group A") 
hist(x2, xlab="", main="Group B") 
hist(x3, xlab="", main="") 
hist(x4, xlab="", main="") 

यह नीचे बहु साजिश पैनल बनाता है, सिवाय इसके कि मैं भी लाल रंग में पाठ जोड़ दिया है। मैंने के बाद पीडीएफ फ़ाइल को एनोटेट करके लाल टेक्स्ट जोड़ा, मैंने आर में ग्राफ पैनल बनाया और फिर इसे पीडीएफ के रूप में सहेजा। मैं यह जानना चाहता हूं कि इसे सहेजने और सहेजी गई फ़ाइल को एनोटेट करने के बजाए, आर के भीतर ग्राफ़ पैनल को प्रोग्रामेटिक रूप से एनोटेट करना है।
आम तौर पर, मैं text() या mtext() का उपयोग करके एक एनोटेशन जोड़ता हूं। लेकिन यह केवल तभी काम करता है जब आप एक ग्राफ को एनोटेट कर रहे हों। 4 ग्राफ के पूरे पैनल के निर्देशांक के सापेक्ष एनोटेशन जोड़ने का कोई तरीका है? मैं अभी बेस ग्राफिक्स में एक समाधान की तलाश में हूं, लेकिन अगर कोई जानता है कि ggplot2 या जाली में कुछ ऐसा कैसे करना है, तो मुझे यह देखने में भी दिलचस्पी होगी। enter image description here

उत्तर

10

यदि आप वास्तव में इन प्रकार के लेआउट मुद्दों पर बेहतर नियंत्रण चाहते हैं, तो आप उपयुक्त नाम layout का उपयोग कर सकते हैं।

m <- matrix(c(1,2,3,3,4,5,6,6),ncol = 2,byrow = TRUE) 
layout(m,widths = c(0.5,0.5),heights = c(0.45,0.05,0.45,0.05)) 

par(mar = c(2,4,4,2) + 0.1) 
hist(x1, xlab="", main="Group A") 
hist(x2, xlab="", main="Group B") 

par(mar = c(0,0,0,0)) 
plot(1,1,type = "n",frame.plot = FALSE,axes = FALSE) 
u <- par("usr") 
text(1,u[4],labels = "Here",col = "red",pos = 1) 

par(mar = c(2,4,2,2) + 0.1) 
hist(x3, xlab="", main="") 
hist(x4, xlab="", main="") 

par(mar = c(0,0,0,0)) 
plot(1,1,type = "n",frame.plot = FALSE,axes = FALSE) 
u <- par("usr") 
text(1,u[4],labels = "Here",col = "red",pos = 1) 

enter image description here

+0

+1 पर लाइनों की संख्या (लाइन = xx में) को अनुकूलित करने की आवश्यकता हो सकती है। बहुत लंबा, 'mfrow'। –

+0

@mplourde हाँ, 'लेआउट' बहुत चिकना है। आधार में बाकी सब कुछ की तरह, यह थोड़ा सा हो सकता है, लेकिन आप निश्चित रूप से सभी समान सेटिंग्स को जल्दी से सीखते हैं। – joran

+0

यह चाल है। मुझे 'लेआउट' के बारे में जागरूक करने के लिए धन्यवाद। मैं देख सकता हूं कि मैं इसे बार-बार उपयोग करूँगा। – eipi10

7

आप mtextouter=TRUE के साथ उपयोग करना चाहते हैं। उदाहरण के लिए, mtext('Results2', side=1, line=-2, outer=TRUE) और mtext('Results1', side=3, line=-20, outer=TRUE)

+0

आप कहां पी उपरोक्त उदाहरण में mtext? मैं इसे काम करने के लिए नहीं मिल सका। ओपी कोड में हिस्ट करने के लिए अंतिम कॉल के बाद – Shawn

+0

। आपको 'लेआउट' के लिए अपने डेटा सेट मान – HelloWorld

3

इस उदाहरण layout समारोह सरल है के रूप में पहले से ही दिखाया गया है के लिए, लेकिन अधिक सामान्य मामलों के लिए आप भी grconvertX और grconvertY कार्य (का उपयोग कर par(xpd= की स्थापना कतरन के साथ सीखना चाहिए। धर्मांतरित फ़ंक्शन आपको विभिन्न समन्वय प्रणालियों के लिए वर्तमान उपयोगकर्ता निर्देशांक में निर्देशांक दे सकते हैं, उदाहरण के लिए आप सामान्यीकृत डिवाइस निर्देशांक से 0.5 को परिवर्तित करके पृष्ठ पर कुछ केंद्रित कर सकते हैं।

+1

कोई तर्क दे सकता है कि जब आप इसे प्राप्त करते हैं, तो ग्रिड ग्राफिक्स (शायद ग्रिडबेस पैकेज के संयोजन के साथ) का उपयोग करना आसान होगा – baptiste

+0

ग्रिड और ग्रिडबेस पैकेज निश्चित रूप से देखने लायक हैं, लेकिन मुझे लगता है कि बहुत सारे मामले हैं आधार ग्राफों का एक सेट जो पहले से ही आसानी से किया जा सकता है, 'grconvertX' या' grconvertY' 'के आधार पर स्थिति के साथ एनोटेशन जोड़ा जा सकता है। –