2016-04-13 8 views
7

Mam dane, które składają się z kilku punktów danych dla wielu osób, a każda z tych osób pochodzi z konkretnej witryny badania. Chciałbym narysować wszystkie punkty, narysować 95% elips dla każdej osoby, ale następnie pokolorować elipsy według miejsca badania. Niestety wydaje się, że gdy określam kolor na podstawie strony, rysowana jest elipsa dla zagregowanej grupy.ggplot2 losowanie pojedynczych elips, ale kolor według grupy

Dane wyglądać następująco:

dat1 <- data.frame(X=rnorm(21),Y=rnorm(21),indiv_id=rep(c(1,2,3),7),group_id=rep(1,21)) 
dat2 <- data.frame(X=rnorm(21,5),Y=rnorm(21,5),indiv_id=rep(c(4,5,6),7),group_id=rep(2,21)) 
dat3 <- data.frame(X=rnorm(21,10),Y=rnorm(21,10),indiv_id=rep(c(7,8,9),7),group_id=rep(3,21)) 
ggdat <- rbind(dat1,dat2,dat3) 
ggdat$indiv_id <- as.factor(ggdat$indiv_id) 
ggdat$group_id <- as.factor(ggdat$group_id) 

Gdybym rysować elipsy pojedynczymi, widzę wszystkich elips oddzielnie:

ggplot(ggdat) + 
    geom_point(aes(x=X, y=Y,color=indiv_id),size=1) + # 
    stat_ellipse(aes(x=X, y=Y,color=indiv_id),type = "norm") 

individual ellipses

ale jeśli rysuję przez grupa tworzy tylko jedną elipsę na grupę:

ggplot(ggdat) + 
    geom_point(aes(x=X, y=Y,color=indiv_id),size=1) + # 
    stat_ellipse(aes(x=X, y=Y,color=group_id),type = "norm") + #, linetype = 2 
    theme(legend.position='none') 

group ellipses

Jak mogę narysować wszystkie 9 elipsy ale pokolorować ich grupy? Dzięki za pomoc!

Odpowiedz

4

wyraźnie określono grupy:

ggplot(ggdat) + 
    geom_point(aes(x=X, y=Y,color=indiv_id),size=1) + # 
    stat_ellipse(aes(x=X, y=Y,color=group_id, group=indiv_id),type = "norm") + 
    theme(legend.position='none') 

enter image description here

Powiązane problemy