38 votes

Ajuster le positionnement de l'étiquette dans Axes3D de matplotlib

J'ai des problèmes avec les étiquettes d'axes qui chevauchent les étiquettes de tiques dans matplotlib. J'ai essayé de repositionner les étiquettes "manuellement" en appliquant des transformées ou en appelant set_y(), mais sans succès.

Voici un extrait qui reproduit le problème :

import matplotlib
matplotlib.use("TKAGG")
import matplotlib.pyplot as pyplot
import mpl_toolkits.mplot3d

figure = pyplot.figure()
figure.subplots_adjust(bottom=0.25, top=0.75)
axes = figure.gca(projection='3d')
xLabel = axes.set_xlabel('XXX xxxxxx xxxx x xx x')
yLabel = axes.set_ylabel('YY (y) yyyyyy')
zLabel = axes.set_zlabel('Z zzzz zzz (z)')
plot = axes.plot([1,2,3],[1,2,3])

pyplot.show()

Notez comment les étiquettes x et y se heurtent aux tiques. Puis-je résoudre cela avec élégance ?

21voto

Adam Hughes Points 4177

Dans les nouvelles versions de matplotlib, voici comment procéder :

ax.xaxis._axinfo['label']['space_factor'] = 2.8

Voir l'explication ici :

https://github.com/matplotlib/matplotlib/issues/3610

Testé sur v1.4, devrait fonctionner dans les versions > 1.1 je crois.

17voto

TNT Points 3

Ajoutez ceci pour chaque axe, adaptez le nombre :

axes.yaxis.labelpad=30

Il est mentionné dans le lien par Adam Hughes comme ne fonctionne pas, mais il fonctionne pour moi.

7voto

septi Points 5224

Cela modifie le rembourrage pour toutes les étiquettes (x, y, z) en un seul coup. J'aime cette approche le plus :

from matplotlib import rcParams
rcParams['axes.labelpad'] = 20

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X