2012-01-05 6 views

risposta

15

Questo può essere ottenuto considerando la trama in un modo leggermente diverso dalla descrizione. In pratica, si desidera disegnare un rettangolo colorato tra le posizioni desiderate sull'asse x, riempiendo l'intero intervallo limite dell'asse y. Questo può essere ottenuto usando rect() e notare come, nell'esempio seguente, prendo le coordinate dell'utente (usr) del grafico corrente per darmi i limiti sull'asse y e che trasciniamo oltre questi limiti per garantire l'intera gamma è coperto nella trama.

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() può disegnare una sequenza di rettangoli se forniamo un vettore di coordinate, e può facilmente gestire il caso per il x arbitraria, y coordinate del tuo bonus, ma per quest'ultimo è più facile evitare errori se si inizia con un vettore di coordinate X e un altro per la Y coordinate come di seguito:

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 

si può solo avere come facilmente i dati come lo avete in bonus:

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

Puoi anche usare 'poligono' per ombreggiare regioni più complicate. –

+3

almeno per alcuni metodi 'plot', puoi anche racchiudere la chiamata' rect' in 'panel.first' – baptiste

+0

Buoni punti entrambi! –

Problemi correlati