2012-11-24 20 views
20

Ich habe eine CSV-Datei unter e:\dir1\datafile.csv. Es enthält drei Spalten und 10 Kopf- und Fußzeilen müssen übersprungen werden. Ich möchte es mit numpy.loadtxt() plotten, für die ich keine rigorose Dokumentation gefunden habe.Plot Daten von CSV-Datei mit Matplotlib

Hier ist, was ich begann zu schreiben von den verschiedenen Versuchen, die ich im Internet gefunden habe.

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

bezogen http://stackoverflow.com/questions/11248812/matplotlib-basic-plotting-from-text-file –

Antwort

34

Nach dem docsnumpy.loadtxt ist

ein schneller Leser für einfach formatierten Dateien. Die genfromtxt-Funktion bietet eine anspruchsvollere Handhabung von z. B. Linien mit fehlenden Werten.

so gibt es nur ein paar Optionen, um kompliziertere Dateien zu handhaben. Wie erwähnt numpy.genfromtxt hat mehr Optionen. So als Beispiel Sie

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

, um die Daten zu lesen und mit Namen versehen zu den Spalten (oder lesen eine Kopfzeile aus der Datei mit names=True) und als plottete es mit

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

Ich denke, verwenden könnten numpy ist jetzt ziemlich gut dokumentiert. Sie können die Docstrings leicht innerhalb von ipython oder mit einer IDE wie spider untersuchen, wenn Sie es vorziehen, sie als HTML gerendert zu lesen.

+1

Vielen Dank für Ihre Informationen. Ich habe die numpy ref heruntergeladen. Handbuch; Es enthält alle Informationen, die ich über genfromtxt benötige. – user1850133

+0

schön zu hören. Auf Stackoverflow würden Sie normalerweise eine Antwort upvoten, wenn es für Sie nützlich wäre (und vielleicht einen Kommentar hinterlassen) und/oder es akzeptieren, wenn Ihre Frage beantwortet wird. – bmu

4

Ich vermute

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

Oder, alternativ, 'x, y = Daten [:,: 2] .T' (oder sogar 'x, y, third_column = data.T' wenn' data' immer 3 Spalten haben wird. –

+0

Seine ungültige Syntax –