2012-11-24 5 views
20

J'ai un fichier CSV à e:\dir1\datafile.csv. Il contient trois colonnes et 10 lignes de début et de fin doivent être sautées. Je voudrais le tracer avec numpy.loadtxt(), pour lequel je n'ai pas trouvé de documentation rigoureuse.données de tracé à partir du fichier CSV avec matplotlib

Voici ce que j'ai commencé à écrire à partir des nombreux essais que j'ai trouvés sur le 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

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

Répondre

34

Selon le docsnumpy.loadtxt est

un lecteur rapide pour les fichiers simplement formatés. La fonction genfromtxt fournit une gestion plus sophistiquée, par exemple, des lignes avec des valeurs manquantes.

Il n'existe donc que quelques options pour gérer des fichiers plus complexes. Comme mentionné numpy.genfromtxt a plus d'options. Ainsi, à titre d'exemple, vous pouvez utiliser

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

pour lire les données et attribuer des noms aux colonnes (ou lire une ligne d'en-tête du fichier avec names=True) et que tracer avec

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

Je pense numpy est assez bien documenté maintenant. Vous pouvez facilement inspecter les docstrings depuis ipython ou en utilisant un IDE comme spider si vous préférez les lire en HTML.

+1

Merci pour votre information. J'ai téléchargé le ref numpy. Manuel; il a toutes les informations dont j'ai besoin sur genfromtxt. – user1850133

+0

agréable à entendre. Sur Stackoverflow vous auriez normalement upvote une réponse, si elle vous était utile (et peut-être laisser un commentaire) et/ou l'accepter si votre question est répondue. – bmu

4

Je devine

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

Ou, alternativement, 'x, les données y = [:,: 2] .T' (ou même 'x, y, third_column = data.T' si' data' aura toujours 3 colonnes). –

+0

Sa syntaxe invalide –

Questions connexes