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
Puoi anche usare 'poligono' per ombreggiare regioni più complicate. –
almeno per alcuni metodi 'plot', puoi anche racchiudere la chiamata' rect' in 'panel.first' – baptiste
Buoni punti entrambi! –