Ajuster l'étiquette de positionnement dans Axes3D de matplotlib
Je vais avoir des ennuis avec les labels des axes qui se chevauchent les tiques étiquettes dans matplotlib. J'ai essayé de repositionner les étiquettes "manuellement" en appliquant des transformations ou en appelant set_y(), mais en vain.
Voici un extrait de code 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 le x et le y des étiquettes affrontement avec les tiques. Puis-je résoudre ce élégamment ?
Vous devez vous connecter pour publier un commentaire.
Je partage votre frustration. J'ai travaillé dessus pendant une bonne demi-heure et a obtenu nulle part. Les docs disent set_xlabel prend un arg labelpad mais j'obtiens une erreur (AttributeError: propriété Inconnue labelpad)! Réglage d'elle après le fait de ne pas faire n'importe quoi, sur xaxis ou w_xaxis.
Voici un brut solution de contournement:
Dans de nouvelles versions de matplotlib, c'est la façon de le faire:
Voir l'explication ici:
https://github.com/matplotlib/matplotlib/issues/3610
Testé sur v1.4, devrait fonctionner dans les versions > 1.1 je crois.
J'ai vraiment besoin de suivre StackOverflow plus souvent. Je suis le responsable actuel de mplot3d. La raison pour laquelle les différentes astuces qui fonctionnent généralement en 2d parcelles ne fonctionnent pas pour la 3d parcelles est parce que mplot3d a été initialement écrit avec codée en dur par défaut. Il y avait aussi des bugs dans la façon dont mplot3d calculé l'angle de rendre les étiquettes.
v1.1.0 contient plusieurs correctifs pour améliorer l'état de choses. J'ai corrigé l'erreur de calcul des axes étiquette angles, et j'ai fait quelques ajustements à l'espacement. Pour la prochaine version, je voudrais avoir la 3d axes à prendre plus que la valeur par défaut axes d'espacement, puisque le défaut a été conçu pour prendre en compte le fait que les étiquettes de graduation des axes et des étiquettes à l'extérieur de la axes, ce qui n'est pas le cas pour mplot3d. Parce que les espacements sont déterminés par les proportions relatives en mplot3d, d'avoir moins d'espace pour travailler au sein des forces les étiquettes pour les rapprocher.
Comme pour les autres avenues possibles pour des solutions de rechange, veuillez voir la note ici.
Un avertissement juste, ce dictionnaire n'est pas destiné à être une solution permanente, mais plutôt un mal nécessaire jusqu'à ce que le refactor de mplot3d est terminée.
Aussi, v1.1.0 contient de nombreuses mises à jour de l'api de mplot3d. S'il vous plaît vérifier la version révisée de la documentation ici.
Ajouter ce pour chaque axe, d'adapter le nombre:
Il est mentionné dans le lien par Adam Hughes ne fonctionne pas, mais il fonctionne pour moi.
Cela modifie le rembourrage pour tous (x, y, z) étiquettes d'un seul coup. J'aime cette approche le plus:
Comme une pratique de la conception, le texte transformé n'est pas très lisible.
Je vous suggère d'utiliser des étiquettes pour votre axe, peut-être de couleur codé.
C'est de cette façon que vous le faites dans matplotlib