Ok. Es gibt ein paar Möglichkeiten, um zu bekommen, was Sie wollen.
Wenn Sie bereit sind, für mit Mikrosekunden zu regeln, sollten Sie ganz in der Nähe sein, was Sie brauchen:
import matplotlib.pyplot as plt
import datetime
time_strings = ['10:29:55', '10:34:44']
sy1 = [679.162, 679.802]
times = [datetime.datetime.strptime(elem, '%H:%M:%S') for elem in time_strings]
plt.plot(times, sy1, 'ro')
plt.xlabel('Time')
plt.ylabel('Position')
plt.show()
Das die Zeiten zeigen sollten Sie in einem Plan wollen, nur mit Mikrosekunden in der Formatierung. Die Mikrosekunden machen alles hässlich, aber meine einzigen Änderungen waren für die Klarheit - ich habe nicht import time
oder import matplotlib.ticker
, ich änderte Ihre x
zu einem genaueren Variablennamen und erstellte die Datumsangaben wie Sie. Um die Mikrosekunden loszuwerden, werden die Dinge hässlicher. Sie können nicht einfach den FixedFormatter verwenden, da wir nur 2 Werte festlegen und der Standard-Plot mehr als 2 Ticks hat; Sie müssen einen Weg finden, um den FuncFormatter zum Laufen zu bringen. Dies funktioniert wie gewünscht, ist aber immer noch zu laut, also füge ich die plt.gcf().autofmt_xdate()
hinzu.
import matplotlib.pyplot as plt
import matplotlib.ticker
import datetime
import pylab
time_strings = ['10:29:55', '10:34:44']
sy1 = [679.162, 679.802]
times = [datetime.datetime.strptime(elem, '%H:%M:%S') for elem in time_strings]
plt.plot(times, sy1, 'ro')
formatter = matplotlib.ticker.FuncFormatter(lambda tick_value, _: datetime.datetime.strftime(pylab.num2date(tick_value), '%H:%M:%S'))
plt.gca().xaxis.set_major_formatter(formatter)
plt.gca().xaxis.set_minor_formatter(formatter)
plt.xlabel('Time')
plt.ylabel('Position')
plt.gcf().autofmt_xdate()
plt.show()
Die Zeile, die den FuncFormatter definiert, ist unordentlich. Ich definiere ein Lambda, das eine Funktion ist, die in einer einzelnen Zeile definiert ist. FuncFormatter erwartet 2 Argumente. Der erste ist der tick_value, und es interessiert uns nicht, was der zweite ist, also gab ich ihm den Standardvariablennamen _
, um zu zeigen, dass es uns egal ist. Die Tick-Werte sind Datums- oder Zeitstempel. Die Art, wie wir vom Tick-Wert zu einer Datetime gelangen, erfolgt durch Aufruf von pylab.num2date.
Sie werden feststellen, dass diese zweite Lösung genau das ist, was Sie brauchen. Das Wichtigste, was Sie tun mussten, war zu verfolgen, was Ihre Variablentypen waren und welche Variablentypen wo benötigt wurden.
Also, ist das Problem mit Parsing Datumsangaben oder mit der Handlung? Trennen Sie diese zwei Dinge und nehmen Sie sie unabhängig an. – deceze
versuchen Sie 'plt.plot (x, y)'. x und y sind bereits Listen, und matplotlib benötigt in diesem Fall keine 2d-Liste. – vroomfondel
Ihre Änderungen haben den Verweis auf ein Bild entfernt. Versuchen Sie, mit Matplotlib zu plotten? Wahrscheinlich möchten Sie https://matplotlib.org/api/figure_api.html#matplotlib.figure.Figure.autofmt_xdate. Wenn Sie bearbeiten könnten, welche Plot-Bibliothek Sie verwenden, erhalten Sie möglicherweise Leute, die bereit sind zu antworten. –