2012-04-23 10 views
14

Aby uzyskać bary gdzie osi x są daktyle, robię coś takiego:matplotlib wykres skupione bar z datami

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

Jednak Działki nie są wokół x. Jeśli wcześniej używałeś ax.bar (x-barWidth/2., y, width = barWidth), aby uzyskać pasek, który jest wyśrodkowany wokół x. Czy istnieje sposób na uzyskanie tego samego, gdy wartościami osi X są daty?

Odpowiedz

31

Myślę, że chcesz align='center' słowo kluczowe dla metody bar.

Niewielkie zmiany w swoim przykładzie:

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() 

ołowiu na poniższym rysunku:

enter image description here

Jest to dość prosta odpowiedź, jeśli wiesz, gdzie szukać. matplotlib ma obszerną dokumentację, a dla każdej metody kreślenia twórcy zapewniają a detailed description of the keyword arguments.

+0

Idealny. Jakoś to przeoczyłem. Wielkie dzięki. – imsc

Powiązane problemy