Wie ändere ich die range der x-Achse mit datetimes in matplotlib?
Ich versuche, zeichnen ein Diagramm mit Datumsangaben auf der x-Achse und Werten auf der y-Achse. Es funktioniert gut, außer, dass ich kann nicht den Bereich der x-Achse angebracht. Die x-Achsen-Bereich ist immer Jan 2012 bis Jan 2016, trotz meine Daten sind von heute. Ich bin auch die Angabe, dass xlim sollte das erste und Letzte Datum.
Ich Schreibe dies für python-django, falls das relevant ist.
import datetime
import matplotlib.pyplot as plt
x = [datetime.date(2014, 1, 29), datetime.date(2014, 1, 29), datetime.date(2014, 1, 29)]
y = [2, 4, 1]
fig, ax = plt.subplots()
ax.plot_date(x, y)
ax.set_xlim([x[0], x[-1]])
canvas = FigureCanvas(plt.figure(1))
response = HttpResponse(content_type='image/png')
canvas.print_png(response)
return response
Und hier ist die Ausgabe:
Wir müssen sehen, einige Ihrer Daten zum ausführen Ihrer Beispiel. Die kurz -, Hilfe-Euch-beantworten ist der Aufruf
print(ax.get_xlim())
nach hinzufügen von Daten zu den Achsen und sehen, welche Werte zurückgegeben werden. Sie können dann zwicken Sie Sie als notwendig.InformationsquelleAutor aled1027 | 2014-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit:
Gesehen zu haben, die tatsächlichen Daten aus der OP, alle Werte sind auf das gleiche Datum/Uhrzeit. So matplotlib automatisch Zoomen der x-Achse aus. Sie kann immer noch manuell die x-Achse begrenzt mit
datetime
ObjekteWenn ich etwas mache, wie diese auf matplotlib v1.3.1:
Bekomme ich:
Und der Achsen-Grenzen übereinstimmen, die Daten, die ich angegeben.
alle Ihre Punkte sind bei der gleichen Zeit. Ist das wirklich die Daten, die Sie gerade arbeiten?
Vielen Dank für die Hilfe. Ich habe es behoben. Wenn ich die Daten abgerufen aus der Datenbank die Daten nicht haben, nicht haben, die Stunden, Minuten und Sekunden.
Was ist, wenn ich will, um den offset der erste und der Letzte tick, so dass es nicht in der Zeile erscheinen soll. Punkte können ab einem halben Raum, Anfang und Ende der Hälfte ein Leerzeichen zu spät. ax.Achse(xmin=-0.5,xmax=len(Daten)-0.5) funktioniert nicht
starten Sie eine neue Frage
InformationsquelleAutor Paul H