2012-04-23 3 views
14

Чтобы получить бруски, где х-оси дат, я делаю что-то вроде этого:Matplotlib центрируется Гистограмма с датами

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

Однако участки не сосредоточены вокруг х. Если ранее использовались ax.bar (x-barWidth/2., y, width = barWidth), чтобы получить bar, которые центрированы вокруг x. Есть ли способ получить то же самое, когда значения по оси x являются датами?

ответ

31

Я думаю, вы хотите align='center' ключевое слово для метода bar.

Незначительные изменения в вашем примере:

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

приводят к следующему рисунку:

enter image description here

Это довольно прямо вперед ответ, если вы знаете, где искать. matplotlib имеет обширную документацию, и для каждого метода построения, разработчики предоставляют a detailed description of the keyword arguments.

+0

Perfect. Как-то я пропустил это. Большое спасибо. – imsc

Смежные вопросы