x Werte von plot per hand eintragen

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
Cleo_DaVinci
User
Beiträge: 6
Registriert: Samstag 3. Juli 2021, 11:55

Hi,
ich habe ein Programm, welches .csv Dateien ausliest und einen Graphen plottet. Ein Ausschnitt der Datei sieht so aus:

Code: Alles auswählen

2.280619230E-1;2.100000000E1
4.085474990E-1;2.300000000E1
5.885859610E-1;1.600000000E1
usw..
Die Funktion, welche den Graphen plottet sieht so aus:

Code: Alles auswählen

def create_subplot(x_values, y_values, start_percent, end_percent):
    
    x_min= int(len(x_values)/100*start_percent-1)
    x_max= int(len(x_values)/100*end_percent-1)
    x_values=x_values[x_min:x_max+1]
    y_values=y_values[x_min:x_max+1]
    
    plt.plot(x_values, y_values)
    plt.savefig("plot.pdf")
    plt.show()

Die x-Werte sind vom Messversuch in Sekunden eingetragen. Wie kann ich diese überschreiben und die Werte der Uhrzeit per Hand eintragen?
Vielen Dank
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Warum denn ein neues Thema zum gleichen Problem? Das haben wir doch schon hier angefangen zu diskutieren: viewtopic.php?f=1&t=52524

Und dein Problem ist nicht ausreichend gut beschrieben. Pythons datetime Bibliothek kann keine Zeitarithmetik mit reinen Zeiten, weil man nunmal nur 24h am Tag hat, und damit gilt nicht zwingend, das zeitpunkt + offset > zeitpunkt ist. Das ist aber leider wichtig fuer vernuenftiges Arbeiten damit.

Du brauchst also einen vollen Startzeitpunkt. Wenn du den hast, ist es trivial:

Code: Alles auswählen

import datetime

DATA = [
    (2.280619230E-1, 2.100000000E1),
    (4.085474990E-1, 2.300000000E1),
    (5.885859610E-1, 1.600000000E1)
]

start_date = datetime.datetime.now()

for timestamp, value in DATA:
    timestamp = start_date + datetime.timedelta(seconds=timestamp)
    print(timestamp, value)
Antworten