2016-09-16 2 views
0

여러 조건을 가진 환자의 데이터베이스를 작업 중이며이 조건들 간의 연관성을 보여주는 그래픽을 만들려고합니다. 보다 구체적으로, 나는 다음과 같은 것을 얻을 싶습니다R ggplot 일치도 플롯

enter image description here

내 데이터는 다음과 같이 구성되어 있습니다 : 내가 데이터를 생성

mal1 mal2 mal3 etc. 
0 0 1 
1 1 0 
0 1 0 etc. 

내가 다음 코드를 사용하여 표시 할 원하는대로 :

X <- as.matrix(hdat2) 
out <- crossprod(X) 
diag(out) <- 0  

그리고 난과 플롯 작성 :

은 결과적으로 나는이 음모를 얻기

enter image description here

내가 유사한 방법, 난 상관 행렬 난이 할 수있는 (잘못된 생각 플롯의 symetric 절반을 숨기려

대칭 반을 숨 깁니다). 그러나, 나는 그것을하는 방법에 대해 잘 모르겠습니다.

아무도 도와 줄 수 있습니까? 감사

+0

부분 집합 : 또는, 당신은 지금 역수 포인트 필요는 없다 (있는 (주) 같은 크기의 다른 질병을 가지고 각각의 질병을 가진 사람들의 비율을 표시 할 수 있습니다 – Gregor

+0

왜 그것이 오도하는 것입니까? 한 가지 방법은 연결된 원본 그림과 비슷한 작업을 수행하여 백분율로 표시하는 것입니다. 그러면 (A, B)에 점을 찍을 수 있습니다. (B, A)의 점과 다른 크기와 의미 (B가있는 A의 비율 v A의 B의 비율 또는 그 반대로) –

+0

오해는 적절한 용어가 아니었을 것입니다. 모자를 쓰면 양쪽 독자가 그림을 이해하는 것이 더 어려워졌습니다. 데이터를 부분 집합하려고합니다. 감사 ! –

답변

0

첫째, 일부 재현 데이터 :

toPlotHalf <- 
    melt(out) %>% 
    mutate_each(funs(factor(.)) 
       , starts_with("Var")) %>% 
    filter(as.numeric(Var1) < as.numeric(Var2)) 

ggplot(toPlotHalf 
     , aes(Var1, Var2)) + 
    geom_point(aes(size = value), colour = "black") + 
    theme_bw() + xlab("") + ylab("") + 
    scale_size_continuous(range=c(2,10)) 

enter image description here

참고 : 여기에

mat <- 
    data.frame(
    malA = sample(0:1, 100, TRUE, c(0.2,0.8)) 
    , malB = sample(0:1, 100, TRUE, c(0.3,0.7)) 
    , malC = sample(0:1, 100, TRUE, c(0.4,0.6)) 
    , malD = sample(0:1, 100, TRUE, c(0.5,0.5)) 
) 

out <- crossprod(as.matrix(mat)) 
diag(out) <- 0 

dplyr를 사용에 관심이있는 단지 절반 아래로 제한하는 예입니다 그러나 이런 식으로 당신의 계획은 매우 일반적인 특정 질병에 의해 지배 될 것입니다. 만 포함하도록 데이터

toPlot <- 
    prop.table(out, 1) %>% 
    melt() %>% 
    filter(value > 0) 



ggplot(toPlot 
     , aes(Var1, Var2)) + 
    geom_point(aes(size = value), colour = "black") + 
    theme_bw() + xlab("") + ylab("") + 
    scale_size_continuous(range=c(2,10)) 

enter image description here

+0

은 완벽하게 작동합니다. 감사 –