2012-04-23 16 views
14

Um die Bars, wo die x-Achse Daten sind, wie ich so etwas wie dies tue:matplotlib zentriert Balkendiagramm mit Daten

import numpy as np 
import matplotlib.pyplot as plt 
import datetime 

x = [datetime.datetime(2010, 12, 1, 0, 0), 
    datetime.datetime(2011, 1, 1, 0, 0), 
    datetime.datetime(2011, 5, 1, 1, 0)] 
y = [4, 9, 2] 

ax = plt.subplot(111) 
barWidth=20 
ax.bar(x, y, width=barWidth) 
ax.xaxis_date() 

plt.show() 

enter image description here

Allerdings sind die Parzellen nicht um x zentriert. Wenn Sie zuvor ax.bar (x-barWidth/2., y, width = barWidth) verwendet haben, erhalten Sie bar, die um x zentriert sind. Gibt es eine Möglichkeit, dasselbe zu erreichen, wenn die Werte der X-Achse Datumsangaben sind?

Antwort

31

Ich denke, Sie wollen align='center' Schlüsselwort für die bar Methode.

Die kleinere Änderungen an Ihrem Beispiel:

import numpy as np 
import matplotlib.pyplot as plt 
import datetime 

x = [datetime.datetime(2010, 12, 1, 0, 0), 
    datetime.datetime(2011, 1, 1, 0, 0), 
    datetime.datetime(2011, 5, 1, 1, 0)] 
y = [4, 9, 2] 

ax = plt.subplot(111) 
barWidth=20 
ax.bar(x, y, width=barWidth, align='center') #< added align keyword 
ax.xaxis_date() 

plt.savefig('baralign.png') 
plt.show() 

führen zu der folgenden Abbildung:

enter image description here

Dies ist ein ziemlich geradlinig zu beantworten, wenn Sie wissen, wo sie suchen müssen. matplotlib hat eine umfangreiche Dokumentation, und für jede Plotten Methode bieten die Entwickler a detailed description of the keyword arguments.

+0

Perfekt. Irgendwie habe ich es vermisst. Danke vielmals. – imsc

Verwandte Themen