2017-11-23 4 views
0

다음 플롯에서 내 세 그룹 ("결과"변수를 기반으로) 주위에 타원을 추가하고 싶습니다. 그 VSD를 참고 요인의 결과 및 배치와 DESeq2 개체입니다 :DESeq2의 PCA 그룹에 대한 타원

pcaData <- plotPCA(vsd, intgroup=c("outcome", "batch"), returnData=TRUE) 
percentVar <- round(100 * attr(pcaData, "percentVar")) 
ggplot(pcaData, aes(PC1, PC2, color=outcome, shape=batch)) + 
    geom_point(size=3) + 
    xlab(paste0("PC1: ",percentVar[1],"% variance")) + 
    ylab(paste0("PC2: ",percentVar[2],"% variance")) + 
    geom_text(aes(label=rownames(coldata_WM_D56C)),hjust=.5, vjust=-.8, size=3) + 
    geom_density2d(alpha=.5) + 
    coord_fixed() 

PCA

나는 그것이 정상에서 미학을 상속 할 생각 타원을 추가하는 시도하지만 각 포인트에 대한 타원을 만들려고 .

stat_ellipse() + 

너무 몇 가지 포인트는 타원에게

geom_path을 계산 : 각 그룹은 하나 명의 관찰로 구성되어 있습니다. 그룹 미학을 조정해야합니까?

계산은 stat_density2d() 실패 : FALSE/TRUE가

제안이 필요없는 값을? 미리 감사드립니다.

> dput(pcaData) 
structure(list(PC1 = c(-15.646673151638, -4.21111051849254, 13.1215703467274, 
-6.5477433859415, -3.22129766721873, 4.59321517871152, 1.84089686598042, 
37.8415172383233, 40.9996810499267, 37.6089348653721, -24.5520575763498, 
-46.5840253031228, -4.01498554781508, -31.227922394463), PC2 = c(31.2712754127142, 
5.89621557021357, -10.2425538634254, -3.44497747426626, 2.21504480008043, 
0.315695833259479, -4.66467589267529, -4.27504355920903, -1.08666029542243, 
-2.69753368235982, 5.89767436709778, -24.2836532766506, 4.43980653642228, 
0.659385524221137), group = structure(c(4L, 5L, 6L, 7L, 8L, 5L, 
8L, 1L, 2L, 3L, 6L, 9L, 9L, 9L), .Label = c("ctrl : 1", "ctrl : 2", 
"ctrl : 3", "non : 1", "non : 2", "non : 3", "preg : 1", "preg : 2", 
"preg : 3"), class = "factor"), outcome = structure(c(2L, 2L, 
2L, 1L, 1L, 2L, 1L, 3L, 3L, 3L, 2L, 1L, 1L, 1L), .Label = c("preg", 
"non", "ctrl"), class = "factor"), batch = structure(c(1L, 2L, 
3L, 1L, 2L, 2L, 2L, 1L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("1", 
"2", "3"), class = "factor"), name = structure(1:14, .Label = c("D5-R-N-1", 
"D5-R-N-2", "D5-R-N-3", "D5-R-P-1", "D5-R-P-2", "D5-Z-N-1", "D5-Z-P-1", 
"D6-C-T-1", "D6-C-T-2", "D6-C-T-3", "D6-Z-N-1", "D6-Z-P-1", "D6-Z-P-2", 
"D6-Z-P-3"), class = "factor")), .Names = c("PC1", "PC2", "group", 
"outcome", "batch", "name"), row.names = c("D5-R-N-1", "D5-R-N-2", 
"D5-R-N-3", "D5-R-P-1", "D5-R-P-2", "D5-Z-N-1", "D5-Z-P-1", "D6-C-T-1", 
"D6-C-T-2", "D6-C-T-3", "D6-Z-N-1", "D6-Z-P-1", "D6-Z-P-2", "D6-Z-P-3" 
), class = "data.frame", percentVar = c(0.47709343625754, 0.0990361123451665 
)) 

Maurits 에버스에서 알 수 있듯이

, 나는 단지 2의 3 개 결과 유형 타원을 그린 그룹 AES를 추가했습니다. enter image description here

+0

제발 dput (pcaData)'. –

+0

당신의 예제는 여전히 재현 불가능하고 일관성이 없습니다 :'coldata_WM_D56C'는 어디에도 정의되어 있지 않습니다. 어느 쪽이든, 내 솔루션에 기반한 플롯은 예상대로입니다. ** 오직 3 점만으로 자신감 타원을 계산하거나 그릴 수 없습니다. ** 당신이 기대하는 바가 확실하지 않습니다. 'car :: ellipse'와 Fox and Weisberg의 "Applied Regression에 대한 R Companion"에 링크 된'? stat_ellipse'에서 자세한 정보를 찾을 수 있습니다. –

+0

나는 타원을 계산하기 위해> 3 점이 필요하다는 것을 알지 못 했으므로 그 정보와 도움에 감사드립니다. –

답변

2

샘플 데이터를 제공하지 않으므로 다음은 faithful 데이터를 사용한 예입니다.

열쇠는 group 미적을 추가하는 것입니다.

enter image description here

require(ggplot2); 

# Generate sample data 
df <- faithful[1:10, ]; 
df$batch <- as.factor(rep(1:5, each = 2)); 

# This will throw a similar error/warning to yours 
#ggplot(df, aes(waiting, eruptions, color = eruptions > 3, shape = batch)) + geom_point() + stat_ellipse(); 

# Add a group aesthetic and it works 
ggplot(df, aes(waiting, eruptions, color = eruptions > 3, shape = batch, group = eruptions > 3)) + geom_point() + stat_ellipse(); 

그래서 귀하의 경우, aes(..., group = outcome)를 추가하려고합니다.

+0

도움 주셔서 감사합니다. 이것은 거의 효과가 있었지만 3 개 그룹 중 2 개 그룹에서만 가능했습니다. 위의 dput()을 추가하고 제안 된 업데이트 된 그래프를 첨부했습니다. –

+0

예, 예상대로입니다. 신뢰 타원은> 3 점에 대해서만 그려 질 수 있습니다. 원래 질문에 대한 내 의견을 참조하십시오. –