2009-05-20 3 views
8

Lorsque je trace des données échantillonnées par mois avec des barres, leur largeur est très faible. Si je place le localisateur mineur d'axe X sur DayLocator(), je peux voir que la largeur des barres est ajustée à 1 jour, mais je voudrais qu'ils remplissent un mois entier.Contrôle de la largeur des barres dans matplotlib avec données par mois

J'ai essayé de définir le localisateur de ticks mineurs sur MonthLocator() sans effet.

[modifier]

Peut-être un exemple sera plus explicite, voici un ipython -pylab exemple de ce que je veux dire:

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) 

Cela donne 12 2 pixels barres larges, je les aime être plus large et s'étendre de mois en mois.

+0

parlez-vous barres d'erreur? –

+0

Non je parle des barres qui sont générées par Axes.bar() –

Répondre

24

Il suffit d'utiliser l'argument mot-clé width:

bar(x, y, width=30) 

Ou, depuis plusieurs mois ont un nombre différent de jours, pour le faire paraître bien vous pouvez utiliser une séquence:

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

Merci, je ne pensais même pas que la largeur pourrait prendre des valeurs supérieures à 1 :) –

+11

Quelles sont les unités d'argument de largeur? – alexei

+3

Je pense que c'est dans les unités de l'axe x. – facuq

Questions connexes