2011-12-05 18 views
15

Creo un gráfico con varios grupos y trazado un geom_boxplot() sobre un conjunto de líneas. Sin embargo, sería bueno colorear las cajas de forma transparente para que se vean las líneas.crear diagramas de caja con color transparente ggplot2

He aquí algunos datos de ejemplo:

x11() 

name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "b", "b") 
class <- c("c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3","c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3") 
year <- c("2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008") 
value <- c(100, 33, 80, 90, 80, 100, 100, 90, 80, 90, 80, 100, 100, 90, 80, 99, 80, 100) 

df <- data.frame(name, class, year, value) 
df 

trazo la gráfica con:

p1 <- ggplot(df, aes(year, value)) 
p1 <- p1 + geom_line(aes(group=name, size=name),colour="#ff2300",alpha=0.5) +  facet_wrap(~ class, scales = "free_y") 
p1 <- p1 + geom_boxplot(aes(group=name)) 
print(p1) 

Y en mi sistema no se muestra correctamente el ancho de la línea en la leyenda. ¿Estoy haciendo algo mal? ¡Gracias por adelantado!

+0

¿Qué tal si dibujas líneas después del diagrama de caja, sería sensato? –

+0

Al menos para las herramientas básicas de trazado R, establecer un color con 2 dígitos adicionales define la transparencia. P.ej. '# FF230033' donde la transparencia se extiende de 00 a FF. –

Respuesta

25

Puede agregar el argumento alpha a su diagrama de caja. Por ejemplo:

geom_boxplot(aes(group=name), alpha = 0.8)

le dará

enter image description here

+0

seguro - ¡la forma más obvia! ¡gracias! – Seb

5

Cambiar el orden de los Geoms para dibujar el diagrama de caja primero y luego las líneas. Sin embargo, no creo que tu gráfica tenga sentido. ¿Por qué estás usando el nombre para cambiar el tamaño de la línea? ¿No tendría más sentido cambiar el tipo de línea? Y desaconsejo free_y en las facetas, ya que hace que sea difícil comparar.

name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "b", "b") 
class <- c("c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3","c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3") 
year <- c("2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008") 
value <- c(100, 33, 80, 90, 80, 100, 100, 90, 80, 90, 80, 100, 100, 90, 80, 99, 80, 100) 

df <- data.frame(name, class, year, value) 
df 
library(ggplot2) 
p1 <- ggplot(df, aes(year, value)) 
p1 <- p1 + geom_boxplot(aes(group=name)) + geom_line(aes(group=name, size=name),colour="#ff2300",alpha=0.5) + 
    facet_wrap(~ class, scales = "free_y") 
+0

+1 como advertencia sobre 'free_y'. Afortunadamente, el fondo de ggplot alerta que las escalas no son comparables entre las facetas. –

+0

hola, gracias por la pista. sí tienes razón. ¡el gráfico no tiene mucho sentido! especialmente el argumento del tamaño de línea fue algo que probé por diversión, no debería haber sido publicado de esa manera. con respecto al argumento 'free_y': los datos originales contienen clases en diferentes tipos de bienes inmuebles que son difícilmente comparables (por ejemplo, rentas vs. precios) así que creo que está bien. – Seb

Cuestiones relacionadas