19

为了得到 x 轴是日期的条形,我正在做这样的事情:

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

在此处输入图像描述

但是,这些图并不以 x 为中心。如果之前使用 ax.bar(x-barWidth/2.,y,width=barWidth) 来获取以 x 为中心的 bar。当 x 轴值是日期时,有没有办法得到相同的结果?

4

1 回答 1

35

我认为您需要该方法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()

导致下图:

在此处输入图像描述

如果您知道在哪里看,这是一个非常直接的答案。matplotlib有一个广泛的文档,并且对于每种绘图方法,开发人员都提供了关键字参数的详细描述

于 2012-04-23T13:00:28.320 回答