2010-08-06 19 views
8

R araziler x ekseni altında bir ok ekleme bir R arsa x ekseni altında koordine eder. X eksenim y = 0'da ve arrows'da negatif y koordinatlarını kullanmaya çalıştığımda, oklar x eksenine dik olacak, sadece çizilen okun çok kenarlarını alacağım (biraz boşluk, e, g x ekseni etiketi ve işaretler çizilirken).Belirli x işaretleme okları eklemek çalışıyorum

cevap

10

XPD seçeneği sadece koordinatlarını belirlemek, böylece arsa bölgesinin dışında olmasını oklar kullanılabilir ve TRUE XPD seti: Bu resimli belo olduğunu. Örneğin, xlim = c (0,10) ve İlim = (0,10) varsayarak, ve daha sonra 0

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

x eksenini ayarlamak x ekseni de en fazla işaret dikey ok çizer Bu eksende 1.4 pozisyonu.

+0

+1 Teşekkürler. Güzel ve basit! –

+0

Fantastik! Çok teşekkürler! +1 – ECII

+0

Bu yaklaşımla ilgili tek sorun, grafiği (Rstudio kullanıyorum) yeniden boyutlandırırsanız, okların dağılmasıdır. – ECII

3

Sen azaltılmış marjları ile par(new=TRUE) arayarak, extra bindirme ekleyerek yapabilirsiniz. Örneğin:

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 

Düzenleme: Orijinal arsa ile aynı koordinatlara tutmak istiyorsanız, dikkatli x ve y ekseni limitlerini seçmek zorunda.

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 Teşekkürler ama belirli benim okları çizmek nasıl orijinal planında x koordinatı? Par (new = TRUE) 'i çağırmadan önce, oklar (10,1,20,1) çizersem, grafik koordinat sistemimde (10,1) ila (20,1) arasında gidecekti; par (new = TRUE) 'i çağırdıktan sonra, bir şekilde yeni koordinatları eskilere dönüştürmem gerekiyor ... –

+0

Teşekkür ederiz! Böyle bir şeyin oldukça yaygın olduğunu düşündüm. –

+0

Aslında, bunu kendim yapmak zorunda kalmamıştım. Muhtemelen bunu yapmanın daha iyi bir yolu vardır. – nullglob

İlgili konular