2011-03-31 10 views
27

मैं निम्नलिखित कोड के साथ आर में एक boxplot बनाने हूँ:मैं कैसे एक अनुसंधान में अक्ष लेबल और अक्ष शीर्षक के बीच अधिक स्थान डाल boxplot कर

boxplot(perc.OM.y ~ Depth, axes = F, ylim = c(-0.6, 0.2), xlim = c(3.5, 5.5), 
     lwd = 0.1, col = 8, 
     ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5) 
axis(1, at = c(3.5, 4, 5, 5.5), labels = c(" ", "Shallow", "Deep", " "), 
    cex.axis = 1.5) 
axis(2, cex.axis = 1.5) 

समस्या यह है कि संख्या y- पर लेबल है धुरी वर्तमान में अक्ष शीर्षक को ओवरलैप करता है। क्या अक्ष शीर्षक और धुरी संख्या लेबल के बीच और स्थान डालने का कोई तरीका है?

धन्यवाद

+1

यदि आप कोड पोस्ट करते हैं तो यह सहायक होता है जिसे दूसरों द्वारा चलाया जा सकता है। यहां आप डेटा बना सकते हैं जिसमें समान श्रेणी है, जैसे: 'd <- data.frame (y = rnorm (50, - 2, .1), x = gl (5,5))'; फिर 'बॉक्सप्लॉट (वाई ~ एक्स, डेटा = डी, ...' – Aaron

उत्तर

34
## dummy data 
dat <- data.frame(Depth = sample(c(3:6), 20, replace = TRUE), OM = 5 * runif(20)) 

, y- अक्ष लेबल और एनोटेशन के लिए कुछ कमरे जोड़े मार्जिन साजिश के बाएं हाथ की ओर (side = 2) पर बड़ा बनाकर:

## margin for side 2 is 7 lines in size 
op <- par(mar = c(5,7,4,2) + 0.1) ## default is c(5,4,4,2) + 0.1 

अब साजिश:

## draw the plot but without annotation 
boxplot(OM ~ Depth, data = dat, axes = FALSE, ann = FALSE) 
## add axes 
axis(1, at = 1:4, labels = c(" ", "Shallow", "Deep", " "), cex.axis = 1.5) 
axis(2, cex.axis = 2) 
## now draw the y-axis annotation on a different line out from the plot 
## using the extra margin space: 
title(ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5, 
     line = 4.5) 
## draw the box to finish off 
box() 

फिर साजिश रचने मार्जिन रीसेट:

par(op) 

यह देता है:

boxplot

तो हम पक्ष 2 पर साजिश के मार्जिन के लिए अधिक स्थान बना लिया है, और फिर कुल्हाड़ियों और एनोटेशन (ylab) तैयार की अलग से कैसे नियंत्रित करने के लिए साजिश रुक गई है।

तो यह करने के लिए महत्वपूर्ण इस लाइन है:

op <- par(mar = c(5,7,4,2) + 0.1) ## default is c(5,4,4,2) + 0.1 

क्या हम करते हैं (लाइनों की संख्या में) वस्तु op, और परिवर्तन मार्जिन आकार में मूल चित्रमय मापदंडों को बचाने के होने के लिए 5, क्रमशः नीचे, बाएं, ऊपर, दाएं मार्जिन के लिए प्रत्येक 7, 4, 2 + 0.1 लाइनें। उपर्युक्त पंक्ति डिफ़ॉल्ट दिखाती है, इसलिए कोड डिफ़ॉल्ट रूप से प्रदान किए गए बाएं हाशिए पर 2 और रेखाएं देता है।

फिर जब हम title() का उपयोग कर y- अक्ष लेबल आकर्षित, हम जो (7 की) लाइन पर लेबल आकर्षित करने के लिए निर्दिष्ट करें:

title(ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5, 
     line = 4.5) 

यहाँ मैं लाइन 4.5 इस्तेमाल किया, लेकिन 5 भी काम करेगा। लेबल को खींचा गया साजिश से आगे 'line' के मूल्य जितना अधिक होगा।

चाल बाईं मार्जिन और title() कॉल कि अक्ष टिक के निशान और अक्ष लेबल ओवरलैप नहीं करने की अनुमति देता में 'line' की मूल्य के लिए मूल्य मिल रहा है। आधार ग्राफिक्स के साथ आवश्यक मूल्यों को ढूंढने का सबसे अच्छा समाधान परीक्षण और त्रुटि संभवतः है।

+0

बहुत बहुत धन्यवाद। यह पूरी तरह से काम करता था और अच्छी तरह से समझाया गया था। – KennyPeanuts

+0

@ केनी पियट्स यदि ऐसा है, तो जवाब स्वीकार करने की परवाह है ताकि लोग जान सकें कि आपकी समस्या हल हो गई है? –

+0

करोगे। क्षमा करें, मुझे इसके बारे में पता नहीं था, सिर के लिए धन्यवाद। – KennyPeanuts

19

mgp बड़ा के पहले मूल्य सेट करके देखें। mar के साथ आप मार्जिन को भी बड़ा बनाना चाहते हैं।

par(mgp=c(5,1,0)) 
par(mar=c(5,6,4,2)+0.1) 
3

मुझे यह समाधान बहुत सरल और उपयोगी पाया गया था जब मैं आरेख के चारों ओर सफेद जगह को कम करना चाहता था (कॉन्फ़्रेंस पेपर में आकार सीमाओं पर विचार करें!) जबकि मैं वाई-अक्ष शीर्षक और बड़ी संख्या में टिकों के रूप में ओवरलैप करना चाहता था ।

मैं पाठ के रूप में खिताब की स्थापना की और उन्हें डाल करने के लिए का उपयोग मैं जहाँ भी चाहते हैं, मार्जिन मैन्युअल सेट करने के बाद:

पहले, मनमाने ढंग से मूल्यों के लिए मार्जिन सेट:

par(mar=c(m1, m2, m3, m4)) 

जहां एम 1 एम 4 को चार पक्षों के लिए मार्जिन हैं (1 = नीचे, 2 = बाएं, 3 = शीर्ष और 4 = दाएं)।

उदाहरण के लिए:

par(mar=c(3.1, 4.7, 2.3, 0)) 

तब, जब की साजिश रचने, सेट मुख्य = "", xlab = "" और ylab = "" (अन्यथा उनके पाठ इस नए पाठ के साथ ओवरलैप जाएगा)

अंत में , MTEXT का उपयोग कर(), अक्ष शीर्षक और चित्र शीर्षक मैन्युअल रूप से सेट:

mtext(side=1, text="X axes title", line=0.5) 
mtext(side=2, text="Y axes title", line=3) 
mtext(side=3, text="Diagram title", line=1.5) 

लाइन पैरामीटर आरेख (छोटे मूल्यों आरेख के करीब कहते हैं) से दूरी है।

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