web-dev-qa-db-fra.com

pyplot: étendre la marge au bas d'une figure

La capture d'écran suivante montre mon xaxis. J'ai ajouté quelques étiquettes et les ai tournées de 90 degrés afin de mieux les lire. Cependant, pyplot tronque le bas de sorte que je ne puisse pas lire complètement les étiquettes. Comment puis-je étendre la marge inférieure afin de voir les étiquettes complètes?

enter image description here

20
toom

Deux manières rétroactives:

fig, ax = plt.subplots()
# ...
fig.tight_layout()

Ou

fig.subplots_adjust(bottom=0.2) # or whatever

Voici un subplots_adjust exemple: http://matplotlib.org/examples/pylab_examples/subplots_adjust.html

(mais je préfère tight_layout)

36
Paul H

Une solution rapide sur une ligne qui a fonctionné pour moi consiste à utiliser auto méthode tight_layout directement de pyplot, disponible dans Matplotlib v1.1 et ultérieur:

plt.tight_layout()

Cela peut être invoqué immédiatement avant d'afficher l'intrigue (plt.show()), mais après vos manipulations sur les axes (ex: rotations ticklabel, etc).

Cette méthode pratique évite de manipuler des figures individuelles de sous-parcelles.

Où plt est le pyplot standard de: import matplotlib.pyplot as plt

6
chinnychinchin

Le sous-tracé n'a pas fonctionné pour moi, car la figure entière ne ferait que se redimensionner avec les étiquettes toujours hors limites.

Une solution de contournement que j'ai trouvée consistait à garder l'axe des y toujours une certaine marge sur les valeurs y les plus élevées ou minimales:

x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,y1 - 100 ,y2 + 100))
3
rainer
fig.savefig('name.png', bbox_inches='tight')

fonctionne mieux pour moi, car il ne réduit pas la taille de la parcelle par rapport à

fig.tight_layout()
0
Marcel