matplotlib - sous-intrigues avec des proportions fixes
J'ai un problème avec le traçage de multiples sous-intrigues. Je tiens à mettre l'aspect PHYSIQUE rapport de la sous-intrigues à une valeur fixe.
Dans mon exemple, j'ai 12 parcelles (4 lignes et 3 colonnes) sur un paysage A4 figure. Il y a toutes les sous-intrigues sont bien placés sur l'ensemble de la figure, et pour toutes les sous-intrigues, la hauteur est presque égale à la largeur.
Mais si je change la mise en page de ma silhouette portrait, les sous-intrigues sont étirées verticalement.
Et c'est exactement ce qui ne devrait pas arriver. Je voudrais avoir la même hauteur et la largeur de la sous-intrigues que sur le paysage de la figure. Est-il possible que le ratio d'aspect de la sous-intrigues restent les mêmes?
Merci d'avance,
Peter
EDIT:
J'ai trouvé une solution de contournement. Mais cela fonctionne pour les non-axes logarithmiques...
aspectratio=1.0
ratio_default=(ax.get_xlim()[1]-ax.get_xlim()[0])/(ax.get_ylim()[1]-ax.get_ylim()[0])
ax.set_aspect(ratio_default*aspectratio)
Vous devez vous connecter pour publier un commentaire.
En fait, ce que vous êtes désireux est assez simple... il vous suffit de Vous assurer que
adjustable
est fixé à'box'
sur les deux axes, et vous avez un jeu de proportions pour les axes (ou quelque chose d'autre que'auto'
).Vous pouvez soit le faire avec le
adjustable
kwarg lorsque vous créez des sous-parcelles. Alternativement, vous pouvez le faire après leur création en appelantax.set_adjustable('box')
, ou en appelantax.set_aspect(aspect, adjustable='box')
(où l'aspect est soit'equal'
ou un nombre).Maintenant, indépendamment de la façon dont la figure est redimensionné, les intrigues secondaires, permettra de maintenir le même ratio d'aspect.
Par exemple:
Maintenant, comparer la façon dont le haut intrigue secondaire répond à redimensionnement, par rapport à la façon dont le bas intrigue secondaire répond:
La parcelle initiale
Redimensionnée à une mise en page verticale:
Redimensionnée à une mise en page horizontale:
Votre solution fonctionne pour moi. Après la représentation des données, j'ai appeler la fonction suivante:
ax
argument pour que je puisse l'appliquer à des sous-parcelles. J'ai aussi remplacé lagca().axes
avecax
etgca()
avecax
.En réponse à la remarque faite à propos de la solution ne fonctionne pas pour logarithmique des parcelles de la modifier pour la question d'origine: vous avez besoin d'adapter comme suit:
(Adaptation pour semilog parcelles doit maintenant être évident)
gca()
?