2013-03-14 9 views
5

Chcę dodać linie trendu do mojego ggplot, ale tylko dla istotnych relacji. Teraz geom_smooth lub stat_smooth dodaje linie trendu dla każdej grupy, ale chcę określić, które grupy mają linię trendu, a które nie.Dodaj linię regresji ggplot tylko dla niektórych grup

Poniżej przykład mój skrypt:

plot20<-ggplot(data, aes(x=data$Density, y=data$Total.degrees, color=Species, shape=Species)) 
+ geom_point(size=3) 
+ scale_shape_manual(values=shapeset) 
+ scale_colour_manual(values=colorset) 
+ theme(legend.position="none") 
+ geom_smooth(method=lm, se=FALSE) 

Odpowiedz

11

Jednym rozwiązaniem byłoby umieścić subset() swoich danych wewnątrz geom_smooth() i podać wartość, dla której trzeba wykreślić linię trendu.

Jako przykład użyto danych mtcars (jako że nie podano danych przykładowych). Przy wartościach subset()cyl wybrano wartości 4 lub 6. Insede geom_smooth() również aes() należy powtórzyć.

ggplot(mtcars,aes(wt,mpg,color=factor(cyl)))+geom_point()+ 
    geom_smooth(data=subset(mtcars,cyl==4 | cyl==6), 
       aes(wt,mpg,color=factor(cyl)),method=lm,se=FALSE) 

enter image description here

+0

Dziękuję bardzo! – user2170248