使用每月数据控制matplotlib中的条宽度

Lup*_*uch 12 python matplotlib

当我用条形图每月采样数据时,它们的宽度非常薄.如果我将X轴次要定位器设置为DayLocator(),我可以看到条形宽度调整为1天,但我希望它们填满整整一个月.

我试图将次要刻度定位器设置为MonthLocator()而不起作用.

[编辑]

也许一个例子会更明确,这是ipython -pylab我的意思的一个例子:

x = [datetime.datetime(2008, 1, 1, 0, 0),
    datetime.datetime(2008, 2, 1, 0, 0),
    datetime.datetime(2008, 3, 1, 0, 0),
    datetime.datetime(2008, 4, 1, 0, 0),
    datetime.datetime(2008, 5, 1, 0, 0),
    datetime.datetime(2008, 6, 1, 0, 0),
    datetime.datetime(2008, 7, 1, 0, 0),
    datetime.datetime(2008, 8, 1, 0, 0),
    datetime.datetime(2008, 9, 1, 0, 0),
    datetime.datetime(2008, 10, 1, 0, 0),
    datetime.datetime(2008, 11, 1, 0, 0),
    datetime.datetime(2008, 12, 1, 0, 0)]

y = cos(numpy.arange(12) * 2)

bar(x, y)
Run Code Online (Sandbox Code Playgroud)

这样可以得到12个2像素宽的条形图,我希望它们更宽,并且每个月都会延伸.

Jou*_*nen 41

只需使用width关键字参数:

bar(x, y, width=30)
Run Code Online (Sandbox Code Playgroud)

或者,由于不同的月份有不同的天数,为了使它看起来很好,你可以使用一个序列:

bar(x, y, width=[(x[j+1]-x[j]).days for j in range(len(x)-1)] + [30])
Run Code Online (Sandbox Code Playgroud)

  • 我认为它是以x轴为单位的. (5认同)