2010-08-06 13 views
8

में एक्स अक्ष के नीचे एक तीर जोड़ना मैं आर प्लॉट में एक्स अक्ष के नीचे विशिष्ट एक्स निर्देशांक को चिह्नित करने वाले तीर जोड़ने की कोशिश कर रहा हूं। मेरा एक्स अक्ष y = 0 पर है और जब मैं arrows में ऋणात्मक वाई-निर्देशांक का उपयोग करने का प्रयास करता हूं, तो तीर एक्स अक्ष के लंबवत होंगे, मुझे केवल तीर के बहुत किनारे मिलते हैं (हालांकि कुछ जगह है, ई, जी जहां एक्स-अक्ष लेबल और टिकटें प्लॉट की गई हैं)।आर प्लॉट्स

उत्तर

10

XPD विकल्प तीर में इस्तेमाल किया जा सकता है ताकि आप सिर्फ अपने निर्देशांक निर्धारित कर सकते हैं अपने भूखंड क्षेत्र से बाहर होने के लिए और सही पर XPD सेट करें: यह सचित्र बेलो है। उदाहरण के लिए, यह सोचते हैं xlim = c (0,10) और ylim = (0,10), और आप तो 0 करने के लिए एक्स-अक्ष सेट

arrows(1.4, -1, 1.4, 0, xpd = TRUE) 

एक ऊर्ध्वाधर तीर पर X- अक्ष पर ओर इशारा करते हुए ड्रॉ उस अक्ष पर स्थिति 1.4।

+0

+1 धन्यवाद। अच्छा और सरल! –

+0

शानदार! आपका बहुत बहुत धन्यवाद! +1 – ECII

+0

इस दृष्टिकोण के साथ एकमात्र समस्या यह है कि यदि आप ग्राफ का आकार बदलते हैं (मैं Rstudio का उपयोग कर रहा हूं) तीर गड़बड़ हो जाते हैं। – ECII

3

आप कम मार्जिन के साथ par(new=TRUE) पर कॉल करके अतिरिक्त ओवरले जोड़ कर ऐसा कर सकते हैं। उदाहरण के लिए:

plot(1,1) ## start a plot 
opar <- par(new = TRUE, ## add a new layer 
      mar = c(0,0,0,0)) ## with no margins margins 
## set up the plotting area for this layer 
plot(1,1,xlim=c(0,1),ylim=c(0,1),type='n',xlab='',ylab='') 
arrows(0.1,0.05,0.5,0.05) ## add arrow 
par(opar) ## return the plot parameters to their prior values 

संपादित करें: आप मूल साजिश में के रूप में ही निर्देशांक रखना चाहते हैं, तो आप x- और y- अक्ष सीमा ध्यान से चुनना है।

plot(1,1,xlim=0:1,ylim=0:1) 
arrows(0.1,0.05,0.5,0.05) 
gpar <- par() 
opar <- par(new = TRUE, mar = c(0,0,0,0),xaxs='i',yaxs='i') 

m1 <- (gpar$usr[2] - gpar$usr[1])/(gpar$plt[2] - gpar$plt[1]) 
c1 <- gpar$usr[1] - m1*gpar$plt[1] 
m2 <- (gpar$usr[4] - gpar$usr[3])/(gpar$plt[4] - gpar$plt[3]) 
c2 <- gpar$usr[3] - m2*gpar$plt[3] 
xlim <- c(c1, m1 + c1) 
ylim <- c(c2, m2 + c2) 

plot(1,1,xlim=xlim,ylim=ylim,type='n',xlab='',ylab='') 
arrows(0.1,0.05,0.5,0.05,col='red') 
points(1,1,col='red') 
par(opar) 
+0

+1 धन्यवाद, लेकिन मैं मूल साजिश में एक विशिष्ट एक्स-समन्वय पर अपने तीर कैसे लगा सकता हूं? 'Par (new = TRUE) 'कॉल करने से पहले, यदि मैं तीर खींचता हूं (10,1,20,1) यह मेरे ग्राफ समन्वय प्रणाली में (10,1) से (20,1) तक जाएगा; 'par (new = TRUE) को कॉल करने के बाद, मुझे किसी भी तरह पुराने समन्वय को पुराने लोगों में परिवर्तित करने की आवश्यकता है ... –

+0

धन्यवाद! मैंने सोचा कि इस तरह की चीज काफी आम है। –

+0

दरअसल, मुझे इसे खुद कभी नहीं करना पड़ा। ऐसा करने का शायद एक साफ तरीका है। – nullglob

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