2012-01-05 4 views

Odpowiedz

15

Można to osiągnąć, myśląc o fabule nieco inaczej niż opis. Zasadniczo chcesz narysować kolorowy prostokąt między żądanymi pozycjami na osi X, wypełniając cały zakres limitu osi Y. Można to osiągnąć za pomocą rect() i zanotować, w poniższym przykładzie, chwycić użytkownika (usr) współrzędne bieżącego wykresu, aby dać mi ograniczenia na osi Y i abyśmy wykroczyli poza te ograniczenia, aby zapewnić pełny zakres jest objęty działką.

plot(1:10, 1:10, type = "n", axes = FALSE) ## no axes 
lim <- par("usr") 
rect(2, lim[3]-1, 4, lim[4]+1, border = "red", col = "red") 
axis(1) ## add axes back 
axis(2) 
box() ## and the plot frame 

rect() można narysować ciąg prostokątów czy zapewniamy wektor współrzędnych i można go łatwo obsługiwać sprawy dla dowolnego x, y współrzędne premii, ale ten ostatni jest łatwiej uniknąć błędów jeśli zaczniesz z wektorem współrzędnych X i Y, inny dla współrzędnych jak poniżej:

X <- c(1,3) 
Y <- c(2,4) 
plot(1:10, 1:10, type = "n", axes = FALSE) ## no axes 
lim <- par("usr") 
rect(X[1], Y[1], X[2], Y[2], border = "red", col = "red") 
axis(1) ## add axes back 
axis(2) 
box() ## and the plot frame 

Mogłeś równie dobrze mieć dane, jak masz go w premii:

botleft <- c(1,2) 
topright <- c(3,4) 
plot(1:10, 1:10, type = "n", axes = FALSE) ## no axes 
lim <- par("usr") 
rect(botleft[1], botleft[2], topright[1], topright[2], border = "red", 
    col = "red") 
axis(1) ## add axes back 
axis(2) 
box() ## and the plot frame 
+3

Możesz także użyć 'wieloboku', aby ocieniać bardziej skomplikowane regiony. –

+3

dla niektórych metod 'plot' co najmniej, możesz również zawrzeć wywołanie' rect' w 'panel.first' – baptiste

+0

Dobre punkty zarówno! –