2010-04-21 15 views
26

आर में एक उपयोगी फ़ंक्शन pairs है जो डेटा सेट में चर के बीच जोड़ी कनेक्शन के प्लॉट्स के अच्छे मैट्रिक्स प्रदान करता है। जिसके परिणामस्वरूप भूखंड निम्न चित्र के समान दिखता है, this blog post से नकल:आर के 'जोड़े' के matplotlib एनालॉग

pairs

वहाँ किसी भी अजगर की matplolib के आधार पर समारोह का उपयोग करने के लिए तैयार है? मैंने अपने gallery की खोज की है, लेकिन मुझे जो चाहिए वह कुछ भी नहीं मिला। तकनीकी रूप से, यह एक साधारण कार्य होना चाहिए, लेकिन सभी संभावित मामलों, लेबल, खिताब इत्यादि का उचित संचालन बहुत कठिन है।

अद्यतन त्वरित और गंदे अनुमान के साथ मेरे उत्तर के नीचे देखें।

+0

Seaborn इस, देखना है: http://seaborn.pydata.org/generated/seaborn। pairplot.html –

उत्तर

33

Pandas में मिल जाता है एक समारोह scatter_matrix (source code) जो कुछ इस तरह है में बनाया गया है।

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.DataFrame(np.random.randn(1000, 4), columns=['A','B','C','D']) 
axes = pd.tools.plotting.scatter_matrix(df, alpha=0.2) 
plt.tight_layout() 
plt.savefig('scatter_matrix.png') 

scatter_matrix.png

हालांकि यह pandas विशिष्ट है (लेकिन एक प्रारंभिक बिंदु के रूप में इस्तेमाल किया जा सकता है)।

कुछ और R पांडा में भूखंडों की तरह हैं। docs पर एक नज़र डालें।

0

जहां तक ​​मुझे पता है, इस तरह के उपयोग में उपयोग करने योग्य कार्य नहीं है।

3

मेरी जरूरतों के लिए त्वरित और गंदे सन्निकटन:

def pair(data, labels=None): 
    """ Generate something similar to R `pair` """ 

    nVariables = data.shape[1] 
    if labels is None: 
     labels = ['var%d'%i for i in range(nVariables)] 
    fig = pl.figure() 
    for i in range(nVariables): 
     for j in range(nVariables): 
      nSub = i * nVariables + j + 1 
      ax = fig.add_subplot(nVariables, nVariables, nSub) 
      if i == j: 
       ax.hist(data[:,i]) 
       ax.set_title(labels[i]) 
      else: 
       ax.plot(data[:,i], data[:,j], '.k') 

    return fig 

ऊपर कोड इसके द्वारा सार्वजनिक डोमेन

+0

मेरे लिए बेस मॉड्यूल कोड में अतिरिक्त मूल्य है। यह बहुत स्पष्ट है, मैं डेटा मैनिपुलेशन कार्यों के लिए इसे निर्देशक के रूप में ले जाऊंगा। एक प्रश्न: 'ऑब्जेक्ट' किस ऑब्जेक्ट प्रकार हो सकता है? – Merlin

2

matplotlib के हाल के संस्करणों में subplots समारोह (कम से कम 1.4) बनाता है यह एक छोटा सा आसान:

def pairs(data, names): 
    "Quick&dirty scatterplot matrix" 
    d = len(data) 
    fig, axes = plt.subplots(nrows=d, ncols=d, sharex='col', sharey='row') 
    for i in range(d): 
     for j in range(d): 
      ax = axes[i,j] 
      if i == j: 
       ax.text(0.5, 0.5, names[i], transform=ax.transAxes, 
         horizontalalignment='center', verticalalignment='center', 
         fontsize=16) 
      else: 
       ax.scatter(data[j], data[i], s=10) 
+1

यदि विज्ञान-सीखने के लिए डेटासेट मानक पर लागू किया गया है, तो 'लेन (डेटा)' अवलोकनों की संख्या वापस करेगा, चर की संख्या नहीं। 'डी = data.shape [1]' इस मामले में समाधान है। –

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