2011-01-30 13 views
8

में परिवर्तनीय लंबाई डेटा वाले बॉक्सप्लॉट मैंने टेक्स्टफाइल में कुछ डेटा एकत्र किया है और एक बॉक्सप्लॉट बनाना चाहते हैं। लेकिन इस डेटाफाइल में चर लंबाई की पंक्तियां हैं, उदाहरण के लिए।matplotlib

1.2, 2.3, 3.0, 4.5
1.1, 2.2, 2.9

समान लंबाई के लिए

मैं सिर्फ
पीडब्लू = numpy.loadtxt ("./ learning.dat")
matplotlib.boxplot कर सकता है (PW.T);

मैं परिवर्तनीय लंबाई डेटा लाइनों को कैसे संभाल सकता हूं?

+0

कैसे डेटा व्याख्या की जानी चाहिए? क्या सभी मानों को एक 1 डी सरणी में संयोजित किया जाना चाहिए? –

+0

नहीं, मैं डेटाफाइल कॉलम के लिए बॉक्सप्लॉट रखना चाहता हूं। तो मैं बराबर लंबाई के मामले में क्या करूँगा एक एम बार एन सरणी होगी, फिर हस्तांतरण बॉक्सप्लॉट, सही? – Kabbo

+0

दस्तावेज़ कहते हैं "एक्स एक सरणी या वैक्टर का अनुक्रम है।" तो आपको अपने डेटा में पढ़ने और इसे प्रति बॉक्स एक वैक्टर की श्रृंखला में अनुवाद करने की आवश्यकता है। ऐसा लगता है कि आप इसे पायथन के सीएसवी मॉड्यूल का उपयोग करके पढ़ सकते हैं। –

उत्तर

16

बस सरणी या सूचियों की एक सूची का उपयोग करें। boxplot किसी भी तरह का अनुक्रम लेगा (ठीक है, कुछ भी है जिसमें __len__ है, वैसे भी। यह जेनरेटर आदि के साथ काम नहीं करेगा)।

उदा .:

import matplotlib.pyplot as plt 
x = [[1.2, 2.3, 3.0, 4.5], 
    [1.1, 2.2, 2.9]] 
plt.boxplot(x) 
plt.show() 

enter image description here

आप अपना डेटा कैसे पढ़ने के लिए पूछ रही है, तो तरीकों से आप क्या चाहते करने के लिए बहुत सारे हैं।

import matplotlib.pyplot as plt 
import numpy as np 

def arrays_from_file(filename): 
    """Builds a list of variable length arrays from a comma-delimited text file""" 
    output = [] 
    with open(filename, 'r') as infile: 
     for line in infile: 
      line = np.array(line.strip().split(','), dtype=np.float) 
      output.append(line) 
    return output 

plt.boxplot(arrays_from_file('test.txt')) 
plt.show() 
2

तुम भी Plot.ly में एक boxplot कर सकते हैं, पायथन एपीआई या सिर्फ GUI का उपयोग: एक साधारण उदाहरण के रूप। मैं this graph बनाया है, जो आप ब्राउज़र में या Python API इस तरह के साथ क्या कर सकते हैं:

box1 = {'y': [1.2, 2.3, 3.0, 4.5], 
'type': 'box'} 
box2 = {'y': [1.1, 2.2, 2.9], 
'type': 'box'} 
response = py.plot([box1, box2]) 
url = response['url'] 
filename = response['filename'] 

पूर्ण प्रकटीकरण: मैं Plotly टीम पर कर रहा हूँ।

enter image description here

+0

woah में इसे कैसे खिलाया जाए, सुंदर! –