2012-09-05 12 views
9

faccio il seguente grafico:aggiungendo retta di regressione per gruppo con ggplot2

> ddd 
     UV.NF TRIS   volvol 
2 145.1923 31 500 µl/625 µl 
3 116.3462 50 500 µl/625 µl 
4 127.1635 60 500 µl/625 µl 
5 125.9615 69 500 µl/625 µl 
6 162.0192 30 1 ml/625 µl 
7 166.8269 50 1 ml/625 µl 
8 176.4423 60 1 ml/625 µl 
9 171.6346 70 1 ml/625 µl 
19 292.3077 31 500 µl/2500 µl 
20 321.1538 50 500 µl/2500 µl 
21 225.0000 60 500 µl/2500 µl 
22 263.4615 69 500 µl/2500 µl 
23 301.9231 30 1 ml/2500 µl 
24 350.0000 50 1 ml/2500 µl 
25 282.6923 60 1 ml/2500 µl 
26 282.6923 70 1 ml/2500 µl 
35 133.6207 31 500 µl/625 µl 

ggplot() + 
    geom_point(aes(y = log(UV.NF), x = TRIS, colour=ddd[,"volvol"], shape=ddd[,"volvol"]), 
     data=ddd) + 
    labs(colour = "volvol", shape="volvol") + xlab("TRIS (mM)") + 
    guides(colour = guide_legend(title="Vol. lyo./Vol. reconst."), 
     shape=guide_legend(title="Vol. lyo./Vol. reconst.")) + 
    scale_shape_manual(values = c(19,19,3,3)) + scale_colour_manual(values = c(2,4,2,4)) 

graph

voglio aggiungere la retta di regressione lm(y~x) per ciascuno dei quattro gruppi che compaiono nella legenda. Ho fatto molti tentativi con geom_smooth() ma senza successo.

risposta

13

Non sono abbastanza sicuro se è quello che vuoi, ma hai provato quanto segue?

ggplot(ddd,aes(y = log(UV.NF), x =TRIS,colour=volvol,shape=volvol)) + 
geom_point() + geom_smooth(method="lm", fill=NA) 

Questo mi dà la trama seguente con i tuoi dati: enter image description here

C'è anche un po 'di documentazione per geom_smooth che fa più o meno quello che desideri, anche se in maniera più complicata (flessibile).

+0

Si noti che con così pochi punti dati, il modello lineare non è molto preciso. –

+1

Eccellente! Questo non ha funzionato perché ho digitato ggplot() + geom_point (...) invece di ggplot (...) + geom_point() –

+1

Dovresti * sempre * inserire i tuoi dati e l'estetica generale (aes()) nella funzione ggplot , eccetto che hai una buona ragione per non (quando vuoi inserire diversi tipi di grafici sullo stesso grafico, allora ha senso mettere l'aes() nelle rispettive funzioni geom_ *. –

Problemi correlati