données de représentation graphique du fichier CSV avec matplotlib

j'ai un fichier CSV à e:dir1datafile.csv. Il contient trois colonnes et 10 lignes de titre et de fuite doivent être sautées. Je voudrais tracer avec numpy.loadtxt(), pour lequel je n'ai pas trouvé de documentation rigoureuse.

Voici ce que j'ai commencé à écrire depuis plusieurs essais j'ai trouvé 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:dir1datafile.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()
24
demandé sur bmu 2012-11-25 00:42:09

2 réponses

Selon docsnumpy.loadtxt

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

il n'y a donc que quelques options pour traiter les fichiers plus compliqués. 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 de lire une ligne d'en-tête du fichier avec names=True) et que l'intrigue avec

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

je pense que numpy est assez bien documenté maintenant. Vous pouvez facilement inspecter les cordes de l'intérieur ipython ou en utilisant un IDE comme spider si vous préférez les lire en HTML.

37
répondu bmu 2012-11-25 11:32:57

je devine

x= data[:,0]
y= data[:,1]
4
répondu Joe Kington 2012-11-25 02:06:09