2012-11-24 15 views
20

के साथ सीएसवी फ़ाइल से साजिश डेटा मेरे पास e:\dir1\datafile.csv पर एक CSV फ़ाइल है। इसमें तीन कॉलम हैं और 10 शीर्षक और पीछे की रेखाओं को छोड़ने की आवश्यकता है। मैं इसे numpy.loadtxt() के साथ साजिश करना चाहता हूं, जिसके लिए मुझे कोई कठोर दस्तावेज नहीं मिला है।matplotlib

यहां मैंने वेब पर मिली कई कोशिशों से लिखना शुरू किया है।

import matplotlib as mpl 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.cbook as cbook 

def read_datafile(file_name): 
    # the skiprows keyword is for heading, but I don't know if trailing lines 
    # can be specified 
    data = np.loadtxt(file_name, delimiter=',', skiprows=10) 
    return data 

data = read_datafile('e:\dir1\datafile.csv') 

x = ??? 
y = ??? 

fig = plt.figure() 

ax1 = fig.add_subplot(111) 

ax1.set_title("Mains power stability")  
ax1.set_xlabel('time') 
ax1.set_ylabel('Mains voltage') 

ax1.plot(x,y, c='r', label='the data') 

leg = ax1.legend() 

plt.show() 
+0

संबंधित http://stackoverflow.com/questions/11248812/matplotlib-basic-plotting-from-text-file –

उत्तर

34

अनुमान लगा रहा हूँ docsnumpy.loadtxt के अनुसार

बस प्रारूप वाली फ़ाइलों के लिए एक तेजी से रीडर है। Genfromtxt फ़ंक्शन अधिक परिष्कृत हैंडलिंग प्रदान करता है, उदाहरण के लिए, गुम मूल्यों वाली रेखाएं।

इसलिए अधिक जटिल फ़ाइलों को संभालने के लिए केवल कुछ विकल्प हैं। जैसा कि उल्लेख किया गया है numpy.genfromtxt में अधिक विकल्प हैं। तो एक उदाहरण के रूप में आप

import numpy as np 
data = np.genfromtxt('e:\dir1\datafile.csv', delimiter=',', skip_header=10, 
        skip_footer=10, names=['x', 'y', 'z']) 

इस्तेमाल कर सकते हैं डेटा पढ़ सकते हैं और स्तंभों के नाम आवंटित करने (या names=True साथ फ़ाइल से एक हैडर लाइन पढ़ें) और की तुलना में साथ

ax1.plot(data['x'], data['y'], color='r', label='the data') 

मुझे लगता है कि यह साजिश numpy अब काफी अच्छी तरह से प्रलेखित है। आप आसानी से ipython के भीतर से डॉकस्ट्रिंग का निरीक्षण कर सकते हैं या spider जैसे आईडीई का उपयोग करके यदि आप उन्हें HTML के रूप में प्रस्तुत करना पसंद करते हैं।

+1

आपकी जानकारी के लिए धन्यवाद। मैंने numpy रेफरी डाउनलोड किया। मैनुअल; इसमें सभी जानकारी है जो मुझे genfromtxt के बारे में चाहिए। – user1850133

+0

सुनने के लिए अच्छा है। स्टैक ओवरफ्लो पर आप सामान्य रूप से एक उत्तर को ऊपर उठाएंगे, अगर यह आपके लिए उपयोगी था (और शायद एक टिप्पणी छोड़कर) और/या आपके प्रश्न का उत्तर देने पर इसे स्वीकार करें। – bmu

4

मैं

x= data[:,0] 
y= data[:,1] 
+1

या, वैकल्पिक रूप से, 'x, y = डेटा [:,: 2] .T' (या यहां तक ​​कि 'x, y, third_column = data.T' यदि' डेटा' में हमेशा 3 कॉलम होंगे)। –

+0

इसकी अमान्य वाक्यविन्यास –