2012-09-05 13 views
9

I do el siguiente gráfico:añadiendo línea de regresión por grupo 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

Quiero añadir la línea de regresión lm(y~x) para cada uno de los cuatro grupos que aparecen en la leyenda. He hecho muchos intentos con geom_smooth() pero sin éxito.

Respuesta

13

No estoy muy seguro de si eso es lo que quiere, pero ¿ha intentado lo siguiente?

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

Esto me da la siguiente parcela con sus datos: enter image description here

También hay algo de documentación para geom_smooth que hace más o menos lo desea, aunque de una manera más complicada (pero flexible).

+0

Tenga en cuenta que con tan pocos puntos de datos, el modelo lineal no es muy preciso. –

+1

¡Excelente! Eso no funcionó porque escribí ggplot() + geom_point (...) en lugar de ggplot (...) + geom_point() –

+1

Debería * siempre * poner sus datos y su estética general (aes()) en la función ggplot , excepto que tienes una muy buena razón para no hacerlo (cuando quieres poner diferentes tipos de gráficos en el mismo gráfico, entonces tiene sentido poner los aes() en las funciones geom_ * respectivas. –

Cuestiones relacionadas