2012-11-24 15 views
20

Ho un file CSV allo e:\dir1\datafile.csv. Contiene tre colonne e 10 linee di intestazione e di trascinamento devono essere saltate. Mi piacerebbe tracciarlo con numpy.loadtxt(), per il quale non ho trovato alcuna documentazione rigorosa.dati di stampa dal file CSV con matplotlib

Ecco cosa ho iniziato a scrivere dai vari tentativi che ho trovato sul web.

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

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

risposta

34

Secondo il docsnumpy.loadtxt è

un lettore veloce per i file semplicemente formattati. La funzione genfromtxt fornisce una gestione più sofisticata di, ad esempio, linee con valori mancanti.

quindi ci sono solo poche opzioni per gestire i file più complicati. Come già detto numpy.genfromtxt ha più opzioni. Così ad esempio è possibile utilizzare

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

per leggere i dati e assegnare i nomi alle colonne (o leggere una riga di intestazione del file con names=True) e poi tracciare con

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

penso Numpy è abbastanza ben documentato ora. È possibile ispezionare facilmente le docstrings all'interno di ipython o utilizzando un IDE come spider se si preferisce leggerle renderizzate come HTML.

+1

Grazie per le tue informazioni. Ho scaricato il numpy ref. Manuale; ha tutte le informazioni di cui ho bisogno su genfromtxt. – user1850133

+0

bello da sentire. Su StackOverflow si invierà di norma una risposta, se fosse utile per te (e magari lasciando un commento) e/o accettata in caso di risposta alla tua domanda. – bmu

4

Sto indovinando

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

Oppure, in alternativa, 'x, y = data [:,: 2] .T' (o anche 'x, y, third_column = data.T' se' data' avrà sempre 3 colonne). –

+0

Sintassi non valida –

Problemi correlati