web-dev-qa-db-ja.com

月ごとのデータを使用したmatplotlibのバー幅の制御

1か月にサンプリングされたデータを棒でプロットすると、その幅は非常に薄くなります。 X軸のマイナーロケーターをDayLocator()に設定すると、バーの幅が1日に調整されていることがわかりますが、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ピクセル幅のバーが得られます。幅を広くして、月ごとに延長したいと思います。

15
Luper Rouch

widthキーワード引数を使用するだけです。

bar(x, y, width=30)

または、月によって日数が異なるため、見栄えを良くするために次のシーケンスを使用できます。

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