Wert über Uhrzeit plotten

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
snowlion
User
Beiträge: 3
Registriert: Samstag 25. Mai 2013, 11:02

Hallo Leute,
ich habe ein Mittelgroßes Problem bei dem ich inzwischen einfach nicht mehr weiter komme. (Ich habe den Eindruck, dass die Lösung vermutlich banal ist, ich aber den Wald vor lauter Bäumen nicht mehr sehe)

Folgendes:

Ich habe ein txt file so:

Code: Alles auswählen

Uhrzeit Bodenfeuchtigkeit Luftfeuchtigkeit[%] Temperatur[°C]
10:52:59 728 72 17
10:53:01 727 72 17
10:53:03 728 72 17
10:53:05 729 72 17
10:53:07 729 72 17
10:53:09 728 72 17
Das lese ich dann folgendermaßen aus:

Code: Alles auswählen

import matplotlib.pyplot as plt
import matplotlib.dates as md
import numpy as np
import datetime as dt
import time
import dateutil, pylab
import re

f = open(r'C:\Arduino\Moisture_TEST_1_130513\Log2\130518_1117.txt')

t = []
moisture = []
humidity = []
temp=[]
zeit=[]
for nummer, zeile in enumerate(f):
        if nummer>0:
        t.append(zeile.split(" ")[0])
        moisture.append( zeile.split(" ")[1])
        humidity.append( zeile.split(" ")[2])
        temp.append( zeile.split(" ")[3])
    f.close
Dadurch bekomme ich dann logischerweise:

Code: Alles auswählen

['10:52:59', '10:53:01', '10:53:03', '10:53:05', '10:53:07', '10:53:09']
Da ich damit aber nicht plotten kann, mach ich noch folgendes: (und hier muss irgendwo mein Fehler liegen)

Code: Alles auswählen

today = datetime.date.today()
for x in t:
       times = map(int, re.split(r"[:]", x))
       zeit.append(times[0]*3600+times[1]*60+times[2]+today.year+today.month)

plt.subplots_adjust(bottom=0.2)
plt.xticks(rotation=25)
ax=plt.gca()
xfmt = md.DateFormatter('%H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
plt.plot(zeit,moisture)
plt.show
Ich bekomme eben nur "00:00:00" als Zeit ausgegeben
(Kann ich hier auch Bilder/Plots hochladen? Bzw hat mir jemand einen Tipp, wo ich es am besten Hochladen kann, damit ich auch meinen Plot hier reinstellen kann...)


Das Problem ist nun eben, dass ich natürlich die Uhrzeit im Plot haben will...

Ich entschultige mich scho vorab für den inzwischen chaotischen code - er ist das Resultat von 4 Tagen Suche im Internet und dem Testen verschiedener Lösungsansätze.

Vielen Dank
Gruß
Stefan
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@snowlion: lies doch mal genau nach, wie Uhrzeiten umgerechnet werden müssen. So wie es jetzt ist, ist es totaler quatsch, warum sollte jemand Jahre, Monate und Sekunden addieren und diese dann als Tage seit 1. Januar 1 00:00:00 nehmen?
Nimm zum Lesen der Dateien am besten »numpy.loadtxt«:

Code: Alles auswählen

data = numpy.loadtxt(filename, skiprows=1, converters={0:str2time})
dann fehlt nur noch ein sinnvolles »str2time«.
snowlion
User
Beiträge: 3
Registriert: Samstag 25. Mai 2013, 11:02

Oh ja... das ist ein copy paste fehler mit dem Jahr und dem Monat.
Das war heute nacht noch so ne Schnapfidee vorm EInschlafen...
snowlion
User
Beiträge: 3
Registriert: Samstag 25. Mai 2013, 11:02

Alles klar.
Habs hinbekommen :-)

Herzlichen Dank für den Tipp Sirius3

War gar nicht so schwer - aber ich hab wirklich den Wald vor Bäumen nicht mehr gesehen.
Antworten