2012-09-05 18 views
9

zrobić poniższy wykres:dodanie linii regresji w grupie z 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

chcę dodać linię regresji lm(y~x) dla każdej z czterech grup występujących w legendzie. Zrobiłem wiele prób z geom_smooth(), ale bez powodzenia.

Odpowiedz

13

Nie jestem do końca pewien, czy tego właśnie chcesz, ale czy próbowałeś następujących rzeczy?

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

Daje mi następujący wykres z danymi: enter image description here

Istnieje również niektóre dokumentacji geom_smooth że ma dość dużo, co chcesz, aczkolwiek w bardziej skomplikowanej (jeszcze) elastyczny sposób.

+0

Należy zauważyć, że przy tak małej liczbie punktów model liniowy nie jest zbyt precyzyjny. –

+1

Doskonale! To nie zadziałało, ponieważ wpisałem ggplot() + geom_point (...) zamiast ggplot (...) + geom_point() –

+1

Powinieneś * zawsze * umieścić swoje dane i ogólną estetykę (aes()) w funkcji ggplota , z wyjątkiem bardzo dobrego powodu, aby nie (gdy chcesz umieścić różne rodzaje wykresów na tym samym wykresie, to sensowne jest umieszczenie aes() w odpowiednich funkcjach geom_ *. –

Powiązane problemy