2009-05-20 8 views
8

Kiedy wykreślam dane próbkowane na miesiąc za pomocą pasków, ich szerokość jest bardzo cienka. Jeśli ustawię mniejszy lokalizator osi X na DayLocator(), widzę, że szerokość pasków jest dostosowywana do 1 dnia, ale chciałbym, żeby wypełniły cały miesiąc.Kontrolowanie szerokości pasków w matplotlib z danymi miesięcznymi

Próbowałem ustawić lokalizator podrzędnych znaczników w MonthLocator() bez efektu.

[edytuj]

Może przykład będzie bardziej wyraźne, tutaj jest ipython -pylab przykładem tego, co mam na myśli:

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) 

Daje to 12 2 piksele szerokie bary, chciałbym je lubią być szerszym i rozciągać się z miesiąca na miesiąc.

+0

mówisz słupki błędów? –

+0

Nie mówię o prętach, które są generowane przez Axes.bar() –

Odpowiedz

24

Wystarczy użyć argumentu width kluczowe:

bar(x, y, width=30) 

Albo, ponieważ różne miesiące mają różną liczbę dni, aby wyglądać dobrze można użyć sekwencji:

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

Dzięki nie myślałem nawet, że szerokość może przyjąć wartości większe niż 1 :) –

+11

Co to są jednostki argumentu width? – alexei

+3

Myślę, że jest w jednostkach osi x. – facuq

Powiązane problemy