Pourquoi mon xlabel coupé dans mon matplotlib intrigue?
je trace un ensemble de données en utilisant matplotlib
où j'ai un xlabel qui est assez" grand " (c'est une formule rendue en TeX qui contient une fraction et qui a donc l'équivalent en hauteur de quelques lignes de texte).
dans tous les cas, le bas de la formule est toujours coupé quand je dessine les chiffres. Changer la taille de la figure ne semble pas aider cela, et je n'ai pas été en mesure de comprendre comment déplacer l'axe x "vers le haut" pour faire de la place pour le xlabel. Quelque comme cela serait une solution temporaire raisonnable, mais ce serait bien d'avoir un moyen de faire matplotlib reconnaître automatiquement que l'étiquette est coupée et redimensionner en conséquence.
voici un exemple de ce que je veux dire:
import matplotlib.pyplot as plt
plt.figure()
plt.ylabel(r'$lnleft(frac{x_a-x_b}{x_a-x_c}right)$')
plt.xlabel(r'$lnleft(frac{x_a-x_d}{x_a-x_e}right)$')
plt.show()
alors que vous pouvez voir l'ylabel entier, le xlabel est coupé au fond.
dans le cas où il s'agit d'un problème propre à la machine, Je l'exécute sur OSX 10.6.8 avec matplotlib 1.0.0
5 réponses
Utiliser:
import matplotlib.pyplot as plt
plt.gcf().subplots_adjust(bottom=0.15)
pour faire place à l'étiquette.
Edit:
depuis que j'ai donné la réponse, matplotlib
a ajouté la fonction tight_layout()
.
Je suggère donc de l'utiliser:
plt.tight_layout()
devrait faire de la place pour le xlabel.
Une option facile est de configurer matplotlib pour ajuster automatiquement la taille de la parcelle. Il fonctionne parfaitement pour moi et je ne sais pas pourquoi il n'est pas activé par défaut.
Méthode 1
mettez ceci dans votre fichier matplotlibrc
figure.autolayout : True
voir ici pour plus d'informations sur la personnalisation du fichier matplotlibrc: http://matplotlib.org/users/customizing.html
Méthode 2
"mise à Jour de la rcParams en cours d'exécution, comme ce
from matplotlib import rcParams
rcParams.update({'figure.autolayout': True})
l'avantage d'utiliser cette approche est que votre code produira les mêmes graphiques sur des machines configurées différemment.
vous pouvez également définir le rembourrage personnalisé par défaut dans votre $HOME/.matplotlib/matplotlib_rc
comme suit. Dans l'exemple ci-dessous, j'ai modifié à la fois le rembourrage inférieur et le rembourrage extérieur:
# The figure subplot parameters. All dimensions are a fraction of the
# figure width or height
figure.subplot.left : 0.1 #left side of the subplots of the figure
#figure.subplot.right : 0.9
figure.subplot.bottom : 0.15
...
mettre plot.tight_layout()
après tous les changements sur le graphique, juste avant show()
ou savefig()
résoudra le problème.
dans le cas où vous voulez le stocker dans un fichier, vous le résolvez en utilisant bbox_inches="tight"
argument:
plt.savefig('myfile.png', bbox_inches = "tight")