Frage

Ich möchte ein Histogramm in Matplotlib aus einer Eingabedatei, um die Rohdaten, die (.txt). Ich bin vor Probleme in Bezug auf die Eingabedatei. Ich denke, es sollte ein eher kleines Programm. Jede Matplotlib Gurus, jede mögliche Hilfe?

Ich bin nicht für den Code zu fragen, sollten einige Eingänge mich setzen auf dem richtigen Weg!

War es hilfreich?

Lösung

Ich würde empfehlen, mit ' loadtxt ', die tatsächlich in der NumPy Bibliothek ist. Es gibt ähnliche Funktionen in Matplotlib (csv2rec) aber Matplotlib standardisiert tatsächlich auf loadtxt.

Hier ist, wie es funktioniert:

from matplotlib import pyplot as PLT

with open('name_of_your_file.csv') as f:
  v = NP.loadtxt(f, delimiter=",", dtype='float', comments="#", skiprows=1, usecols=None)

'v', das Objekt von 'loadtxt' zurückgegeben wird eine n x m-Array NumPy.

‚loadtxt‘ akzeptiert entweder eine Datei oder einen Dateideskriptor. Die Instanz oben hat die meisten der Methodensignatur. ‚Skiprows‘ eine ganze Zahl, die angibt, die Anzahl der Zeilen von oben zu zählen, dass man überspringen wollen; es ist üblich, sie auf „1“ einzustellen, die Kopfzeile zu überspringen; ‚Usecols‘ beginnt bei ‚0‘ und eine Liste rezitiert die Spalten Sie einschließen möchten ( ‚None‘ ist die Standardeinstellung, und bedeutet ‚umfassen alle‘). Die anderen Parameter wie erwartet.

Um ein Histogramm aus diesen Daten plotten:

from matplotlib import pyplot as PLT

v_hist = NP.ravel(v)   # 'flatten' v
fig = PLT.figure()
ax1 = fig.add_subplot(111)

n, bins, patches = ax1.hist(v_hist, bins=50, normed=1, facecolor='green')
PLT.show()

Andere Tipps

Sie können nicht direkt matplotlib sagen, ein Histogramm aus einer Eingabedatei zu machen - Sie müssen die Datei selbst öffnen und die Daten von ihm zu erhalten. Wie werden Sie das tun, hängt vom Format der Datei - wenn es nur eine Datei mit einer Nummer auf jeder Zeile, können Sie einfach gehen durch jede Zeile, strip() Räume und Zeilenumbrüche und Verwendung float() zu wandeln es in eine Zahl <. / p>

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top