【问题标题】:Controlling bars width in matplotlib with per-month data使用每月数据控制 matplotlib 中的条形宽度
【发布时间】:2010-10-27 13:37:39
【问题描述】:

当我用条形图绘制每月采样的数据时,它们的宽度很窄。如果我将 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)

这给出了 12 个 2 像素宽的条形图,我希望它们更宽并逐月延伸。

【问题讨论】:

  • 你说的是误差线吗?
  • 不,我说的是由 Axes.bar() 生成的条形

标签: python matplotlib


【解决方案1】:

只需使用width 关键字参数:

bar(x, y, width=30)

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

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

【讨论】:

  • 谢谢,我什至没想到宽度可以取大于 1 的值 :)
  • 按月天数设置宽度非常棒
  • 如果你使用barh,使用height。
猜你喜欢
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多