2012-04-23 31 views
14

Para obtener los bares donde el eje x son las fechas, que estoy haciendo algo como esto:matplotlib gráfico de barras centrado con fechas

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

Sin embargo, las parcelas no están centrados alrededor de x. Si anteriormente has usado ax.bar (x-barWidth/2., y, width = barWidth) para obtener la barra, que se centran en x. ¿Hay alguna manera de obtener lo mismo cuando los valores del eje x son fechas?

Respuesta

31

Creo que quiere align='center' palabra clave para el método bar.

Los cambios menores en su ejemplo:

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

de plomo a la siguiente figura:

enter image description here

Ésta es una respuesta bastante simple si usted sabe dónde buscar. matplotlib tiene una extensa documentación, y para cada método de trazado, los desarrolladores proporcionan a detailed description of the keyword arguments.

+0

Perfecto. De alguna manera me lo perdí. Muchas gracias. – imsc

Cuestiones relacionadas