R 플롯에서 x 축 아래에 특정 x 좌표를 표시하는 화살표를 추가하려고합니다. 내 x 축은 y = 0이고, 음수의 y 좌표를 arrows
에 사용하려고하면 화살표가 x 축에 수직이됩니다. 화살표가있는 부분의 가장자리 만 나타납니다 (일부 공간은 있지만, e, g 여기서 x 축 레이블과 눈금이 그려집니다).R 플롯의 x 축 아래에 화살표 추가
답변
xpd 옵션을 화살표로 사용하면 좌표를 플롯 영역 밖으로 설정하고 xpd를 TRUE로 설정할 수 있습니다. 예를 들어, xlim = C를 (0,10) 및 ylim = (0,10)를 가정하고, 그 다음에 0
arrows(1.4, -1, 1.4, 0, xpd = TRUE)
을 x 축을 설정하여, X 축에서 바라 가리키는 수직 화살표 그리는 축의 1.4 위치
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)
+1 감사합니다.하지만 어떻게하면 원래 플롯의 특정 x 좌표에 화살표를 그릴 수 있습니까? 'par (new = TRUE) '를 호출하기 전에 화살표 (10,1,20,1)를 그리면 그래프 좌표계에서 (10,1)에서 (20,1)로 바뀔 것입니다. 'par (new = TRUE) '를 호출 한 후에 새로운 좌표를 오래된 좌표로 변환해야합니다 ... –
고마워요! 나는 이런 종류의 것이 아주 일반적이라고 생각했다. –
사실, 나는 그것을 직접 할 필요가 없었습니다. 아마 그것을하는 더 깔끔한 방법이있다. – nullglob
+1 감사합니다. 좋고 간단합니다! –
환상적! 고마워요! +1 – ECII
이 방법의 유일한 문제점은 그래프의 크기를 조정하면 (화살표를 사용하여) 화살표가 엉망이된다는 것입니다. – ECII