Contrôle des barres en largeur matplotlib avec des données par mois
-
23-08-2019 - |
Question
Quand je tracer des données échantillonnées par mois avec des barres, leur largeur est très mince. Si je mets X axe localisateur mineur DayLocator (), je peux voir les barres largeur est ajustée à 1 jour, mais je les aime remplir un mois entier.
J'ai essayé de régler le localisateur mineur à tiques MonthLocator () sans effet.
[modifier]
Peut-être un exemple sera plus explicite, voici un exemple de ipython -pylab
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 de large barres, je les aime d'être plus large et de prolonger de mois en mois.
La solution
Il suffit d'utiliser l'argument de 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])