2012-06-28 22 views
7

Sto provando a creare un grafico in R che ha una porzione di trama grigia per enfatizzare quest'area. A differenza di altri esempi, non voglio colorare un'area sotto un grafico, ma colorare un'area su un grafico che inizia in un'area e va alla fine del grafico. Quando provo a usare rect() o polygon() oscura i grafici che voglio sottolineare.Parte ombreggiata di un grafico R

Ad esempio:

x_mean <- c(1, 2, 3, 4) 
y_mean <- c(1, 1, 1, 1) 

y_max <- c(4, 4, 4, 4) 
y_min <- c(-4, -4, -4, -4) 


x_shade <- c(2, 3, 4) 

y_max_shade <- c(4, 4, 4) 
y_min_shade <- c(-4, -4, -4) 

plot(x=rep(x_mean, 3), y=c(y_mean, y_max, y_min), bty='n', type="n") 
arrows(x0=x_mean, y0=y_min, x1=x_mean, y1=y_max, length=0) 
points(x=x_mean, y=y_mean, pch=16) 

Questo sarà tracciare 4 linee sul grafico. Come faccio a disegnare una casella grigia sullo sfondo dalla seconda linea alla fine della trama?

+4

La grafica R utilizza un modello penna + carta, il che significa che gli oggetti disegnati in seguito vengono disegnati in cima agli oggetti precedenti. Provare prima a tracciare con 'rect()', quindi disegnare i punti e le linee che si desidera. – joran

risposta

8

solo così che si è lasciato con più di un semplice commento, ecco una possibile soluzione:

plot(x=rep(x_mean, 3), y=c(y_mean, y_max, y_min), bty='n', type="n") 
rect(2,-4,4,4,col = rgb(0.5,0.5,0.5,1/4)) 
arrows(x0=x_mean, y0=y_min, x1=x_mean, y1=y_max, length=0) 
points(x=x_mean, y=y_mean, pch=16) 

enter image description here

Nota che ho anche dimostrato come utilizzare alpha blending nella specifica colore (utilizzando rgb). Questo può anche essere utile per questo genere di cose. Prova a spostare la linea rect fino alla fine e nota che i risultati sembrano ancora ok, perché il colore di riempimento è parzialmente trasparente.

+0

grazie per avermi informato sull'utilizzo di rgb, questo sarà utile. – Kevin

1

ho trovato this answer essere abbastanza grande per ombreggiatura sfondo parti del R.

Alcuni contesto:

panel.first = rect(c(1,7), -1e6, c(3,10), 1e6, col='green', border=NA)

I primi due argomenti c(1,7) sono i valori di partenza per il rettangolo ombreggiato, e gli argomenti seguenti c(3,10) sono dove termina l'ombreggiatura. Questo crea una regione ombreggiata 1-3 e 7-10.

Problemi correlati