2010-08-02 6 views
2

J'ai actuellement deux sous-placettes. Note: ceci est dans matplotlib v0.99.3 sur Mac OS X 10.6.xComment agrandir la sous-parcelle matplotlib?

J'ai un gestionnaire d'événements qui quand on clique sur l'un des sous-plans, il imprime quelque chose. Ceci est seulement un détenteur de place temporaire. Ce que je veux arriver, c'est que lorsque l'on clique sur la sous-parcelle, je veux qu'elle occupe tout le chiffre (supprime l'autre sous-parcelle et maximise pour remplir la figure entière). Comment ferais-je cela?

Répondre

1

Vous pouvez le faire en modifiant les retours axes que subplot. C'est-à-dire que les axes peuvent être positionnés et dimensionnés de la manière souhaitée, et la sous-placette est juste une fonction qui retourne les axes positionnés dans une grille uniforme; mais une fois que vous avez ces axes de sous-parcelle, vous pouvez les redimensionner et les repositionner arbitrairement. Voici un exemple:

from pylab import * 

axes = [None, None] 

def make(): 
    figure() 
    axes[0] = subplot(1, 2, 1) 
    axes[1] = subplot(1, 2, 2) 
    show() 

def re_form(): 
    xmax = axes[1].get_position().get_points()[1][0] 
    axes[1].set_axis_off() 
    (x0, y0), (x1, y1) = axes[0].get_position().get_points() # xmin, ymin, xmax, ymax 
    axes[0].set_position([x0, y0, xmax-x0, y1-y0]) # x, y, width, height 
    show() 

Ici, je show() utilisé pour mettre à jour l'intrigue, mais vous aurez envie d'utiliser quelque chose de plus approprié pour votre gestionnaire d'événements. Cette démo fonctionne avec iPython: d'abord run le fichier, puis appelez make(), qui dessine les deux axes, puis re_form(), ce qui supprime le second axe et élargit le premier.