2013-02-18 14 views
23

Ich bin auf der Suche nach der Formatierung der Daten auf der X-Achse zu bearbeiten. Das Bild unten zeigt, wie sie standardmäßig in meinem Balkendiagramm angezeigt werden. Ich möchte die Wiederholung von "Dec" und "2012" entfernen und habe nur die tatsächlichen Datumszahlen entlang der X-Achse.Bearbeiten der Datumsformatierung von X-Achsen-Tick-Etiketten in Matplotlib

Irgendwelche Vorschläge, wie ich das machen kann?

enter image description here

+0

Die Antwort für mich gearbeitet: http://stackoverflow.com/questions/30133280/pandas-bar-plot-changes-date -format – Mahdi

Antwort

38

Kurz:

import matplotlib.dates as mdates 
myFmt = mdates.DateFormatter('%d') 
ax.xaxis.set_major_formatter(myFmt) 

Viele Beispiele auf der matplotlib Website. Die am häufigsten verwendete ist here

+2

Gibt es eine alternative Methode, ohne die 'ax.xaxis' zu verwenden, aber' plt. '? – 3kstc

+0

@ 3kstc Vielleicht, aber ich kann mir nicht vorstellen, dass eine Situation, in der man sich mehrdeutig auf die Zustandsmaschine verlässt, dem expliziteren Befehl vorzuziehen ist. –

+0

Für eine schnelle Ansicht aller möglichen Datetime-Formate verwenden Sie [strftime.org] (http://strftime.org). – ImportanceOfBeingErnest

3

Während die Antwort von Paul H den wesentlichen Teil zeigt, ist es kein vollständiges Beispiel. Auf der anderen Seite scheint die matplotlib example ziemlich kompliziert und zeigt nicht, wie man Tage benutzt.

Also für alle in Not hier ist ein voll funktionierendes Beispiel:

from datetime import datetime 
import matplotlib.pyplot as plt 
from matplotlib.dates import DateFormatter 

myDates = [datetime(2012,1,i+3) for i in range(10)] 
myValues = [5,6,4,3,7,8,1,2,5,4] 
fig, ax = plt.subplots() 
ax.plot(myDates,myValues) 

myFmt = DateFormatter("%d") 
ax.xaxis.set_major_formatter(myFmt) 

## Rotate date labels automatically 
fig.autofmt_xdate() 
plt.show() 
Verwandte Themen