2012-06-28 43 views
7

Estoy tratando de hacer una gráfica en R que tenga una parte de la gráfica gris para enfatizar esta área. A diferencia de otros ejemplos, no quiero colorear un área debajo de un gráfico, sino que coloreo un área en un diagrama comenzando en un área y yendo hasta el final del gráfico. Cuando trato de usar rect() o polígono() oscurece las tramas que quiero enfatizar.Parte sombreada de una gráfica R

Por ejemplo:

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) 

Esto trazar 4 líneas en el gráfico. ¿Cómo dibujo un cuadro gris en el fondo desde la segunda línea hasta el final de la gráfica?

+4

R graphics usa un modelo de pluma + papel, lo que significa que los objetos dibujados posteriormente se dibujaron encima de los objetos anteriores. Trate de trazar con 'rect()' primero, y luego dibuje los puntos y las líneas que desee. – joran

Respuesta

8

Sólo para que uno se queda con algo más que un comentario, he aquí una solución posible:

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

Tenga en cuenta que también he demostrado cómo utilizar la mezcla alfa en la especificación de color (usando rgb). Esto también puede ser útil para este tipo de cosas. Intente mover la línea rect hasta el final y observe que los resultados aún se ven bien, porque el color de relleno es parcialmente transparente.

+0

gracias por informarme sobre el uso de rgb, esto será útil. – Kevin

1

que he encontrado this answer que ser bastante grande para piezas con manchas de fondo de R.

un poco de contexto:

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

Los dos primeros argumentos c(1,7) son los valores iniciales para el rectángulo sombreado, y los siguientes argumentos c(3,10) son donde termina el sombreado. Esto crea una región sombreada de 1-3 y 7-10.

Cuestiones relacionadas