
Envoyé par
TWSOTM
Car à ma connaissance seul la taille de la figure peut être imposé et pas la taille des axes
Oui c'est ce qui semble être avancé dans le lien que je vous ai mis dans mon premier post. D'où la solution qui passe par un enlèvement de l'affichage des axes et par le retrait complet de la marge entre la taille de la figure et la taille des axes (ainsi la taille de la figure coincide avec celle des axes). D'ailleurs je vois que vous ne l'avez pas tout à fait adopter, pour pouvoir quand meme garder la graduation des axes. Mais à mon avis ca ca vous introduit une imprécision, car la taille de votre ax va être un poil inférieur à celle de la figure au lieu d'etre identique... Pour parer ca vous pouvez éventuellement mettre les graduations (et aussi les labels si vous voulez) à l'intérieur de l'axe plutôt qu'à l'extérieur.
ax.tick_params(axis="y",pad=-.5, left="off",labelleft="on")
(jouer sur les paramètres pour obtenir le résultat voulu, et répéter l'opération avec axis="x")

Envoyé par
TWSOTM
Cela me permet au passage de remarquer que matplotlib applique des ratios différents sur les axes X et Y
Oui il ajuste au mieux pour occuper la place dans la figure. Pour corriger cela vous avez au moins 2 possibilités :
1) Forcer le ratio 1:1 via
2) Dans le cas où vous faites coincider la taille des axes à celle de la figure, calculer la taille de la figure par rapport aux valeurs de vos axes (xmin, xmax, ymin, ymax)
Partager