2011-12-05 12 views
15

Creo un grafico con diversi gruppi e traccia un geom_boxplot() su un insieme di righe. Tuttavia, sarebbe bello colorare le scatole in modo trasparente in modo che le linee possano essere viste.creare box grafici con colore trasparente ggplot2

Ecco alcuni dati di esempio:

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 

traggo la grafica 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) 

E sul mio sistema non viene visualizzata correttamente lo spessore della linea nella legenda. Sto facendo qualcosa di sbagliato? Grazie in anticipo!

+0

Che dire se si disegnano linee dopo il boxplot, sarebbe sensato? –

+0

Almeno per gli strumenti di stampa R di base, l'impostazione di un colore con 2 cifre aggiuntive definisce la trasparenza. Per esempio. '# FF230033' dove la trasparenza va da 00 a FF. –

risposta

25

È possibile aggiungere l'argomento alpha al grafico box. Per esempio:

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

vi darà

enter image description here

+0

sicuro - il modo più ovvio! grazie! – Seb

5

Cambiare l'ordine dei GEOMs per disegnare il grafico a scatole e poi le linee. Comunque non penso che il tuo grafico abbia un senso. Perché stai usando il nome per cambiare la dimensione della linea? Non avrebbe più senso cambiare il tipo di linea? E mi scuso contro free_y nelle sfaccettature poiché rende difficile il confronto.

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 per avvertimenti su 'free_y'. Fortunatamente, lo sfondo di ggplot avverte che le scale non sono confrontabili tra le faccette. –

+0

ciao, grazie per il suggerimento. sì hai ragione. il grafico non ha molto senso! in particolare l'argomento della dimensione della linea era solo qualcosa che ho provato per divertimento - non dovrebbe essere pubblicato in questo modo. riguardo all'argomento 'free_y': i dati originali contengono classi su diversi tipi di immobili che sono difficilmente comparabili (ad esempio affitti e prezzi), quindi penso che sia ok. – Seb

Problemi correlati