2010-08-06 2 views
8

R 플롯에서 x 축 아래에 특정 x 좌표를 표시하는 화살표를 추가하려고합니다. 내 x 축은 y = 0이고, 음수의 y 좌표를 arrows에 사용하려고하면 화살표가 x 축에 수직이됩니다. 화살표가있는 부분의 가장자리 만 나타납니다 (일부 공간은 있지만, e, g 여기서 x 축 레이블과 눈금이 그려집니다).R 플롯의 x 축 아래에 화살표 추가

답변

10

xpd 옵션을 화살표로 사용하면 좌표를 플롯 영역 밖으로 설정하고 xpd를 TRUE로 설정할 수 있습니다. 예를 들어, xlim = C를 (0,10) 및 ylim = (0,10)를 가정하고, 그 다음에 0

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

을 x 축을 설정하여, X 축에서 바라 가리키는 수직 화살표 그리는 축의 1.4 위치

+0

+1 감사합니다. 좋고 간단합니다! –

+0

환상적! 고마워요! +1 – ECII

+0

이 방법의 유일한 문제점은 그래프의 크기를 조정하면 (화살표를 사용하여) 화살표가 엉망이된다는 것입니다. – 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 감사합니다.하지만 어떻게하면 원래 플롯의 특정 x 좌표에 화살표를 그릴 수 있습니까? 'par (new = TRUE) '를 호출하기 전에 화살표 (10,1,20,1)를 그리면 그래프 좌표계에서 (10,1)에서 (20,1)로 바뀔 것입니다. 'par (new = TRUE) '를 호출 한 후에 새로운 좌표를 오래된 좌표로 변환해야합니다 ... –

+0

고마워요! 나는 이런 종류의 것이 아주 일반적이라고 생각했다. –

+0

사실, 나는 그것을 직접 할 필요가 없었습니다. 아마 그것을하는 더 깔끔한 방법이있다. – nullglob