2013-03-19 9 views
7

यह पिछले प्रश्न का एक संपादित संस्करण है।कई वितरणों की जोड़ी ग्राफिकल तुलना

हम एक मीटर द्वारा nn टिप्पणियों (नमूने) की तालिका से अधिक मीटर चर (जीन, आदि) दिया जाता है, और हम टिप्पणियों के प्रत्येक जोड़ी के बीच चर के व्यवहार का अध्ययन करने के लिए देख रहे हैं - उदाहरण के लिए दो अवलोकन उच्चतम सकारात्मक या नकारात्मक सहसंबंध हैं। इस उद्देश्य के लिए मैंने Stadler et.al में एक महान चार्ट देखा है। नेचर (2011):

enter image description here

यहाँ यह प्रयोग की जाने वाली एक नमूना डेटासेट हो सकता है।

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 है कि यह एक का उत्पादन की gpairs(samples) का परीक्षण किया है। यह एक अच्छी शुरुआत है, लेकिन ऊपरी-दाएँ खंड पर सहसंबंध गुणांक डाल करने के लिए कोई विकल्प नहीं है, और न ही निचले कोने पर घनत्व भूखंडों:

enter image description here

अगला मैं पैकेज GGally की ggparis(samples, lower=list(continuous="density")) (धन्यवाद @LucianoSelzer इस्तेमाल किया के लिए नीचे एक टिप्पणी)। अब हमारे ऊपरी कोने और निचले कोने पर घनत्व पर सहसंबंध हैं, लेकिन हम विकर्ण बारप्लॉट गायब हैं, और घनत्व भूखंड हीटमैप आकार नहीं हैं।

enter image description here

कोई भी विचार अधिक वांछित चित्र (पहले एक) के करीब बनाने के लिए?

उत्तर

9

आप कई अलग-अलग प्लॉटिंग विधियों को गठबंधन करने और परिणामों को गठबंधन करने का प्रयास कर सकते हैं।

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)) 
    } 

संपादित करें: पिछले पाश पर सही अनुक्रमण यहाँ एक उदाहरण है, जो उसके अनुसार बदलाव किया जा सकता है है। pairwise plot

+0

वाह! बहुत अच्छा, धन्यवाद। मैं यह देखने के लिए उत्सुक हूं कि क्या कोई महान और छोटा ggplot2 उत्तर भी है या नहीं। – Ali

+0

मैं शर्त लगाता हूं कि मैंने खुद को ggplot2 से परिचित करना शुरू कर दिया है, इसलिए मैंने पुराने तरीके से जाने का फैसला किया। ggplot2 ग्रिड ग्राफिक्स का उपयोग करता है, इसलिए लेआउट विचार वहां काम नहीं करता है। लेकिन यह सहायक हो सकता है: http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_%28ggplot2%29/ –

संबंधित मुद्दे