2015-01-26 1 views
1

나는 가지 다음과 같습니다 데이터 집합이 있습니다벤 다이어그램 패키지의 합계 값을 재정의

ID X Y Z 
1 T1 10 0 10 
2 T2 0 0 20 
3 T3 10 10 40 
4 T4 0 30 10 
5 T5 0 10 0 
... 

내가 reshape2와 데이터를 녹여과의 교차점을 시각화하기 위해 벤 다이어그램 패키지를 던질 수를 데이터 세트. 그러나. 카운트 (합계가 아님) 만 시각화 할 수 있습니다.

VennDiagram은 T1을 "1"XZ 교차점으로 인식합니다. 패키지를 "20"으로 계산하길 원합니다. 그리고 T3의 경우 XYZ의 "1"카운트가 아니어야합니다. "60"의 합계를 원합니다.

벤 다이어그램 설명서 : 사전에 cran.r.project.org

감사합니다!

편집 :

의 모양은 출력 ... NROWS 함께 합계 합계 곳

grid.newpage() 
draw.triple.venn(area1 = nrow(subset(accounts, X > 1)), 
      area2 = nrow(subset(accounts, Y > 1)), 
      area3 = nrow(subset(accounts, Z > 1)), 
      n12 = nrow(subset(accounts, X > 1 & Y > 1)), 
      n23 = nrow(subset(accounts, Y > 1 & Z > 1)), 
      n13 = nrow(subset(accounts, X > 1 & Z > 1)), 
      n123 = nrow(subset(accounts, X > 1 & Y > 1 & Z > 1)), 
      category = c("X", "Y", "Z"), 
      lty = "blank", 
      fill = c("pink1","mediumorchid","skyblue")) 
+0

예상 출력에 대해 다소 혼란 스럽습니다. ID 열의 의미는 무엇입니까? 'VennDiagram' 패키지의'draw.triple.venn'에 대해 A 영역이 20, B가 50, C가 80이 될 것으로 기대하십니까? 교차점을 어떻게 계산하려고합니까? – jraab

+0

@JesseRaab 편집을 참조하십시오! – emehex

답변

0

library(VennDiagram) 패키지가 작동하지 않습니다 당신이 계신이 가까이 있어야한다.

당신은 테이블이있을 수 있습니다

A1 A2 Overlap 
1 1 2 

을 그리고 당신은이 벤 다이어그램이 중첩의 오른쪽 원의 왼쪽 원 1, 12을 반영합니다.

이 코드를 실행 :

grid.newpage() 
draw.pairwise.venn(area1 = 1, 
        area2 = 1, 
        cross.area = 2) 

을 얻을 것입니다 :

Error in draw.pairwise.venn(area1 = 1, area2 = 1, cross.area = 2) : Impossible: cross section area too large.

그래서 우리는 각 영역에 중복을 추가하여 벤 다이어그램 라이브러리를 속임수해야합니다. 그렇게하면 원하는 것을 얻을 수 있습니다 : 1; 2; 1.

grid.newpage() 
draw.pairwise.venn(area1 = 1 + 2, 
        area2 = 1 + 2, 
        cross.area = 2) 
0

를 (단지 수를 사로 잡고,이 전류 출력) nrow 대신 sum을 사용하고 싶습니다. 또한 하위 집합에 대한 논리를 살펴보고 n12, n23n23에 조건을 추가하는 것이 좋습니다.

예를 들어 n23의 경우 : Y > 1 & Z > 1 & X < 1 - X < 1이 추가 된 것을 확인하십시오. 당신이 행동을 예상대로

draw.triple.venn(area1 = sum(subset(accounts, X > 1)), 
       area2 = sum(subset(accounts, Y > 1)), 
       area3 = sum(subset(accounts, Z > 1)), 
       n12 = sum(subset(accounts, X > 1 & Y > 1 & Z < 1)), 
       n23 = sum(subset(accounts, Y > 1 & Z > 1 & X < 1)), 
       n13 = sum(subset(accounts, X > 1 & Z > 1 & Y < 1)), 
       n123 = sum(subset(accounts, X > 1 & Y > 1 & Z > 1)), 
       category = c("X", "Y", "Z"), 
       lty = "blank", 
       fill = c("pink1","mediumorchid","skyblue")) 
+0

코드를 실행하려고하면 다음과 같이 나타납니다. FUN (X [[1L]], ...) 오류 : 모든 숫자 변수가있는 데이터 프레임에만 정의 됨 – emehex

+0

'Z <1'을 'n12 ='line ...이것은 객체가없는 데이터 프레임을 반환 할 수 있기 때문에 발생합니다. 즉, 기준에 따라 행이 0 인 데이터 프레임이 생성되어 문제가 발생할 수 있습니다. 아마도 이것을 처리하는 데 더 좋은 방법이있을 것입니다. – JasonAizkalns

관련 문제