2016-09-16 11 views
0

私は複数の条件を持つ患者のデータベースに取り組んでおり、これらの条件の関連性を示すグラフィックを作成しようとしています。私はそれが次のコードを使用して示すことにしたいと、私はデータを作成R ggplot一致図

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

:として私のデータが整理され

enter image description here

:具体的には、私は以下のようなものを取得したいのですが:

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

と私はとのプロット作成:

結果として私は私が同様にどのように、私相関行列私はできると(誤解を招くと思うれ、プロットの対称型半分を隠したいのですが

enter image description here

このプロットを得ます対称半分を隠す)。しかし、私はそれを行う方法については分かりません。

助けてもらえますか? おかげ

+0

サブセット:別の方法として、あなたは今、相互のポイントは必ずしもない(している(注)同じサイズの他の病気を持っているそれぞれの病気を持つ人々の割合を提示することができます – Gregor

+0

あなたはそれが誤解を招く理由は何ですか?あなたがリンクした元のプロットに類似した何かをして、それをパーセント表示するようにすることが1つの方法であるとすれば、(A、B) (B、A)のドットとは大きさと意味が異なる(AとBの比率、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

は完全に機能します。ありがとう –