2014-06-17 2 views
2

간단 할 수도 있지만, PCoA 플롯에서 내 주변에 타원을 그려야합니다.ggplot2 & stat_ellipse : 여러 점의 그룹 주위에 타원을 그립니다.

   MDS1  MDS2 Treatment 
X1xF1 -0.19736183 -0.24299825 1xFlood 
X1xF2 -0.17409568 -0.29727596 1xFlood 
X1xF3 -0.15272444 -0.28553837 1xFlood 
S1 -0.06643271 0.47049959  Start 
S2 -0.15143350 0.31152966  Start 
S3 -0.26156297 0.12296849  Start 
X3xF1 0.29840827 0.04581617 3xFloods 
X3xF2 0.50503749 -0.07011503 3xFloods 
X3xF3 0.20016537 -0.05488630 3xFloods 

내 코드는 다음과 같습니다 : (SC)

내 데이터 프레임이

ggplot(data=sc,(aes(x=MDS1,y=MDS2,colour = Treatment)))+geom_point(size=3)+ 
    ggtitle("PCoA of samples at 'class' level(method='Bray')\n",sep=''))+ 
    theme_bw()+guides(colour = guide_legend(override.aes = list(size=3)))+ 
    stat_ellipse() 

그것은 stat_ellipse까지 괜찮까지 PCoA을 나타내는(). 나는 다양한 매개 변수를 사용하여 시도했지만, 최선을 다해서 전체 플롯에 대해 하나의 타원을 얻을 수 있습니다 (지금은 재현 할 수는 없지만).

세 가지 치료법에 대한 세 개의 CI 타원은 치료법과 동일합니다. 어떤 도움을 주시면 감사하겠습니다!

감사합니다.

+0

최소 재현 예. 그것은 타원을 그리는 방법에 초점을 맞추려고 할 때 다소 복잡한 코드입니다. –

+0

좋은 지적, 고마워. 나는 데이터 프레임을 만드는 쓰레기를 제거하고 단지 ggplot2 코드를 남겼다. – RB88

답변

8

ggplot 패키지에는 stat_ellipse(...)이 없으므로 다른 곳에서 다시 가져와야합니다. 공유 할 케어 ?? 알고있는 두 가지 버전이 있습니다 (herehere). 이들 중 어느 것도 데이터 세트에서 작동하지 않는 것으로 보이는데, 이는 둘 다 다른 데이터 세트로 작업했기 때문에 이상합니다.

필자는 마침내 타원을 외부에서 ggplot으로 생성하는 옵션으로 되돌아갔습니다. 그리 어렵지 않습니다.

library(ggplot2) 
library(ellipse) 
centroids <- aggregate(cbind(MDS1,MDS2)~Treatment,sc,mean) 
conf.rgn <- do.call(rbind,lapply(unique(sc$Treatment),function(t) 
    data.frame(Treatment=as.character(t), 
      ellipse(cov(sc[sc$Treatment==t,1:2]), 
        centre=as.matrix(centroids[t,2:3]), 
        level=0.95), 
      stringsAsFactors=FALSE))) 

ggplot(data=sc,(aes(x=MDS1,y=MDS2,colour = Treatment)))+ 
    geom_point(size=3)+ 
    geom_path(data=conf.rgn)+ 
    ggtitle(paste("PCoA of samples at 'class' level(method='Bray')\n",sep=''))+ 
    theme_bw()+ 
    guides(colour = guide_legend(override.aes = list(size=3))) 
+0

주요 문제는 stat_ellipse()가 car :: ellipse() 및 geom_path()에 대한 래퍼 함수이며 제한된 수의 데이터 파인트가있을 때 기본 매개 변수가 위로 이동한다는 것입니다. – Vlo

+0

감사합니다. jlhoward. stat_ellipse() devtools에서, 죄송합니다 그것을 언급하는 것을 잊었습니다. 귀하의 코드를 사용해 보았지만 줄임표가 나타나지 않고 단지 일반 음모를 생성하고 이유를 파악할 수 없습니다 ... – RB88

+0

R을 다시 시작한 다음 코드를 정확하게 복사/붙여 넣으십시오. – jlhoward

관련 문제