Comment puis-je sélectionner par programme spécifique intrigue secondaire dans Matplotlib?
Dans un figure
où verticalement trois parcelles ont été ajoutés avec add_subplot
, comment puis-je sélectionner disons que celui du milieu?
Maintenant je ne cette liste de compréhension:
[r[0] for r in sorted([[ax, ax.get_geometry()[2]] for ax in self.figure.get_axes()], key=itemgetter(1))]
où je peux il suffit de sélectionner l'index je veux, avec le correspondant axes
. Est-il plus simple de faire cela?
OriginalL'auteur c00kiemonster | 2011-08-18
Vous devez vous connecter pour publier un commentaire.
De la matplotlib documentation:
Voici un exemple:
Le graphique du milieu est appelé à nouveau de sorte qu'il peut être annoté.
Ce que si j'ai mis le fond avec mon appel, j'ai besoin de régler à nouveau quand j'en ai l'intrigue secondaire la deuxième fois?
Oui. Les arguments et les mots clés de l'appel d'origine sont utilisées pour faire un identificateur unique. Ainsi, pour la figure de générer cet identifiant unique encore une fois, vous avez besoin de passer les mêmes arguments (définition de la grille, position) et les mots-clés nouveau. Par exemple:
Ce que si j'utilise
ax_again.change_geometry()
?Vous pensez change_geometry, par exemple, à partir de 312 à 422, allait changer la façon dont vous utilisez add_subplot, mais il ne le fait pas. Il semble y avoir un bug ou d'un comportement indéfini lorsque vous appelez change_geometry. La clé unique que l'original a été générés en utilisant les arguments et les mots clés, pour la première add_subplot appel, ne sont pas mises à jour. Par conséquent, si vous voulez obtenir un axe de retour avec un add_subplot appel, vous devez appeler add_subplot avec l'original des arguments et des mots clés. Pour plus d'info, suivez ce rapport:
https://github.com/matplotlib/matplotlib/issues/429
Ma conjecture est que si vous modifiez une propriété de l'intrigue secondaire après la génération avec add_subplot appel, l'unique ne sera pas ajusté. Utilisez donc l'origine des arguments et des mots-clés, et j'espère que cela marchera.
Je souhaite que j'ai compris matplotlib à l'intérieur. Il serait certainement rendre mon travail plus facile. Il m'a fallu un certain temps aussi, et c'est certainement pas facile à démêler ces détails de la documentation. Je suis en train de voir si vous passez kwargs dans l'appel initial, avez-vous à transmettre exactement la même la deuxième fois autour, que les docs suggèrent. Je vais mettre à jour des choses, si je viens avec quoi que ce soit.
Il s'avère donc que la figure de la classe a une fonction membre privée _make_key que "(fait) un hashable clé pour sortir de la args et kwargs', ce qui est utilisé pour identifier l'intrigue secondaire (et je suppose que tous les axes appartenant à un chiffre). Donc, oui, vous avez besoin pour justement utiliser les mêmes arguments et les mots clés.
Merci pour l'astuce. Je crois que je vais avoir à explorer que
_make_key
fonction. Je vais avoir quelques problèmes avec l'obtention de vieux sous-intrigues avecadd_subplot
qui ont eu leur géométrie changé avecchange_geometry
.Donc je suppose que ce n'est pas le comportement voulu et je l'ai soumis un rapport d'émission: github.com/matplotlib/matplotlib/issues/429 Si vous voulez utiliser change_geometry, vous pouvez, mais pour obtenir de l'intrigue secondaire de revenir plus tard, vous devez communiquer avec l'original des arguments et des mots clés. Lorsque vous appelez change_geometry, elle modifie la géométrie, mais cela ne veut pas dire que la figure de cette, de sorte que la figure utilise l'ancienne géométrie reste à définir la clé unique pour que l'intrigue secondaire. add_subplot utilise l'ancienne géométrie pour y accéder à nouveau. Est-il logique?
OriginalL'auteur Yann