Forum: PC-Programmierung Python-Matplotlib Axenskalierung ändern


von Matthias P. (m4tthi)


Angehängte Dateien:

Lesenswert?

Hallo,
zurzeit versuche ich mit Hilfe von Python eine grafische Oberfläche zur 
Auswertung verschiedener Messfiles zu verwirklichen. Dabei wird eine 
csv-Datei mit rund 300 000 Zeilen und 12 SPalten eingelesen und 
geplottet.

Dabei ergibt sich aber dann das Problem, dass auf der x-Achse jeder 
Datumswert einzeln abgebildet wird. Deswegen versuche ich, die 
dargestellten Werte zu reduzieren.
Leider hilft der Befehl ax.set_xticks[] nicht weiter und ich finde im 
Internet auch nichts, das mir weiterhelfen kann.

Im Anhang habe ich noch eine Test-csv. angehängt, falls es etwas mit der 
Formatierung/Abspeicherung des Datums haben sollte.

Ich hoffe, dass mir jemand bei meinem Problem weiterhelfen kann. Sollten 
noch mehr angaben benötigt werden gebt mir einfach bescheid.

Vielen Dank bereits im Vorraus
Mit freundlichen Grüßen
Matthias

von jemand (Gast)


Lesenswert?

Ich tippe darauf, dass die Spalte nicht den richtigen Datentyp hat.
Datumsangaben sind in matplotlib etwas Tricky.
Iirc muss man die Spalte nach datetime64 wandeln.

von Matthias P. (m4tthi)


Lesenswert?

Ist das datetime64 das gleiche Format wie das datetime-Format vom 
datetime-Modul oder muss ich das irgendwie anders konvertieren?

von Sebastian D. (minimalist)


Lesenswert?

Hi,
Mach das über die DateLocator-Routinen der Matplotlib.
Klings erstmal etwas umständlich, ist aber mega flexibel. Ich musste mal 
für einen Plot jeden Montag im Grid hervorheben. Mit dem Daylocator ein 
Kinderspiel. Mach sowas mal mit Excel...
Formatieren kannst du die Ticks dann mit den DateFormatter Routinen

Hier gibt's weitere Infos:
https://matplotlib.org/stable/gallery/text_labels_and_annotations/date.html

Grüße,
M

von Sebastian D. (minimalist)


Lesenswert?

Nachtrag:
In deinem Fall ist wahrscheinlich der MicrosecondLocator der geeignete :
1
 
2
from matplotlib import dates as mdates
3
ax.xaxis.set_major_locator(mdates.MicrosecondLocator(interval=5000, tz=None)) #alle 5msec
4
ax.xaxis.set_major_formatter(mdates.DateFormatter('%S.%f'))

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.