2012-07-24 9 views
6

Quando si utilizza un facet_grid in ggplot2 vorrei poter avere il valore della correlazione per i dati sottostanti per ogni cella della griglia nell'angolo in alto a destra del grafico specifico.valori di correlazione in una griglia di sfaccettature da ggplot2

ad es. se in esecuzione:

p <- ggplot(mtcars, aes(mpg, wt)) + geom_point() 
p + facet_grid(vs ~ am, margins=TRUE) 

Mi piacerebbe vedere il valore per la correlazione per ciascuno dei 9 grafici della griglia da qualche parte. In questo caso specifico dell'esempio, mi aspetterei che ognuno si avvicini a -0,9 circa dall'ispezione visiva.

O forse una tabella di output per andare con la trama che fornisce i valori di correlazione per ciascuna delle celle nella tabella che corrisponde a facet_grid ... (questa è meno desiderabile ma anche un'opzione).

Idealmente mi piacerebbe estendere questo a qualsiasi altra funzione che scelgo così che possa utilizzare una o entrambe le due variabili tracciate per calcolare le statistiche.

È possibile?

Grazie in anticipo

risposta

3

Winston Chang ha suggerito una risposta sul gruppo ggplot2 ... questo è quello che ha detto ... la sua non è una risposta cattiva ...

Si potrebbe fare qualcosa di simile:

p <- ggplot(mtcars, aes(mpg, wt)) + geom_point() 

# Calculate correlation for each group 
cors <- ddply(mtcars, c("vs", "am"), summarise, cor = round(cor(mpg, wt), 2)) 

p + facet_grid(vs ~ am) + 
geom_text(data=cors, aes(label=paste("r=", cor, sep="")), x=30, y=4) 

Non penso sia possibile farlo uscire correttamente con i margini = TRUE, però. Se si desiderano i margini, potrebbe essere necessario pre-elaborare i dati per aggiungere un valore ALL per ogni variabile di sfaccettatura.

-Winston

4

avrei preferito aggiungere una (lineare) più agevole ai dati. Ti dà molte più informazioni di una correlazione.

ggplot(mtcars, aes(mpg, wt)) + 
    geom_smooth(method = "loess", colour = "red", fill = "red") + 
    geom_smooth(method = "lm", colour = "blue", fill = "blue") + 
    geom_point() + facet_grid(vs ~ am, margins=TRUE) 

enter image description here

ggplot(mtcars, aes(mpg, wt)) + geom_smooth(method = "lm") + geom_point() + 
    facet_grid(vs ~ am, margins=TRUE) 

enter image description here