8

これは前の質問の編集版です。

m個の変数(遺伝子など)に対するn個の観測値(サンプル)のmnテーブルが与えられ、観測値の各ペア間の変数の動作を調査しようとしています-たとえば、正または負の値が最も高い2つの観測値相関。この目的のために、私はStadleret.alで素晴らしいチャートを見てきました。ネイチャーペーパー(2011):

ここに画像の説明を入力してください

ここでは、使用するサンプルデータセットである可能性があります。

m <- 1000
samples <- data.frame(unif1 = runif(m), unif2 = runif(m, 1, 2), norm1 = rnorm(m), 
                      norm2 = rnorm(m, 1), norm3 = rnorm(m, 0, 5))

私はすでにこれを生成するgpairs(samples)パッケージをテストしました。gpairsこれは良いスタートですが、右上のセクションに相関係数を配置するオプションも、下隅に密度プロットを配置するオプションもありません。

ここに画像の説明を入力してください

次にggpairs(samples, lower=list(continuous="density"))パッケージを使用GGallyしました(以下のコメントをありがとう@LucianoSelzer)。これで、上隅に相関関係があり、下隅に密度がありますが、対角線のバープロットが欠落しており、密度プロットはヒートマップ形式ではありません。

ここに画像の説明を入力してください

目的の画像(最初の画像)にさらに近づけるためのアイデアはありますか?

4

2 に答える 2

10

いくつかの異なるプロット方法を組み合わせて、結果を組み合わせることができます。以下に例を示します。これは適宜調整できます。

cors<-round(cor(samples),2) #correlations

# make layout for plot layout
laymat<-diag(1:5) #histograms
laymat[upper.tri(laymat)]<-6:15 #correlations
laymat[lower.tri(laymat)]<-16:25 #heatmaps

layout(laymat) #define layout using laymat

par(mar=c(2,2,2,2)) #define marginals etc.

# Draw histograms, tweak arguments of hist to make nicer figures
for(i in 1:5) 
  hist(samples[,i],main=names(samples)[i])

# Write correlations to upper diagonal part of the graph
# Again, tweak accordingly
for(i in 1:4)
  for(j in (i+1):5){
    plot(-1:1,-1:1, type = "n",xlab="",ylab="",xaxt="n",yaxt="n")
    text(x=0,y=0,labels=paste(cors[i,j]),cex=2)
    }

# Plot heatmaps, here I use kde2d function for density estimation
# image function for generating heatmaps
library(MASS)
for(i in 2:5)
  for(j in 1:(i-1)){
     k <- kde2d(samples[,i],samples[,j])
     image(k,col=heat.colors(1000))
    } 

編集: 最後のループのインデックス作成を修正しました。 ペアワイズ プロット

于 2013-03-19T19:59:19.687 に答える