Plot von Datenreihen mit matplotlib

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
alex1990ge
User
Beiträge: 22
Registriert: Freitag 26. Juli 2013, 10:04

Liebe Python Freunde,

ich habe folgendes Problem: Ich habe eine .txt Datei mit 2 Spalten. In jeder Spalte befinden sich einige hundert Zahlen.
Mit matplotlib möchte ich diese Datenreihen nun plotten, und zwar die erste Spalte als x- und die zweite Spalte als y-Achse.

Leider werden mir nur Leere Plots angezeigt. Ich denke, dass ich die Spalten vielleicht erst als Listen einlesen muss. Ist das korrekt? Und wenn ja, wie kann ich das machen?

Hier der für die Aufgabe interessante Ausschnitt aus meinem Quelltext:

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

....

infile = open("lightcurve.txt","r")

for line in infile:
         pair = line.split()
         x = float(pair[0])
         y = float(pair[1])
         plt.plot(x,y)
         plt.show()
Die Datei "lightcurve.txt" wird in dem durch Punkte angezeigtem Bereich zuvor korrekt erstellt.

Für Hinweise und Tipps wäre ich euch sehr dankbar.
Grüße
Alex
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@alex1990ge: Du versuchst hier genau einen Punkt zu plotten, was bei einem Line-Plot ziemlich wenig ist.
Warum verwendest Du nicht numpy.loadtxt?
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

so geht's

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

x,y = np.loadtxt("lightcurve.txt").T
plt.plot(x,y)
plt.show()
numpy.loadtxt gibt bei einer zweispaltigen Datei ein n x 2 Array zurück. Mit ".T" transponiere ich das zu einem 2 x n Array, sodass ich dieses Array durch Zuweisung an x und y in zwei Arrays spalten kann.
a fool with a tool is still a fool, www.magben.de, YouTube
alex1990ge
User
Beiträge: 22
Registriert: Freitag 26. Juli 2013, 10:04

Vielen Dank euch beiden,

habs hinbekommen. Ist ja auch eigentlich ziemlich leicht. Aber wenn man nicht wirklich weiß, wonach man Suchen muss, sucht man sich im Internet nen Ast ab ;)

Grüße
Alex
Antworten