2012-11-23 15 views
5

Tracciare una figura con una barra di colore, come ad esempio lo ellipse collection della galleria matplotlib, sto cercando di capire la geometria della figura. Se posso aggiungere il seguente codice nel codice sorgente (invece di plt.show()):geometria di barre colorate in matplotlib

cc=plt.gcf().get_children() 
print(cc[1].get_geometry()) 
print(cc[2].get_geometry()) 

ottengo

(1, 2, 1) 
(3, 1, 2) 

Capisco il primo - 1 fila, due colonne, la trama prima (e presumibilmente il la seconda è la barra dei colori), ma non capisco la seconda, che mi aspetterei di essere (1,2,2). A cosa corrispondono questi valori?

Modifica: Sembra che gli elementi in cc non abbiano gli stessi assi, il che spiegherebbe le discrepanze. In qualche modo, sono ancora confuso con le geometrie che vengono segnalate.

+0

La mia uscita è diverso; Ottengo '(1,1,1)' e la seconda istruzione 'print' fornisce un'eccezione,' AttributeError: 'L'oggetto' Axes 'non ha attributo' get_geometry''. – egpbos

risposta

2

Quello che sta succedendo è quando si chiama colorbar, use_gridspec default True che poi effettua una chiamata a matplotlib.colorbar.make_axes_gridspec che crea quindi un 1 per 2 griglia per tenere gli assi del diagramma e CBAR quindi poi cbar asse di per sé è in realtà un 3 da 1 griglia che ha le proporzioni aggiustato

la linea chiave matplotlib.colorbar.make_axes_gridspec che rende questo accada è

gs2 = gs_from_sp_spec(3, 1, subplot_spec=gs[1], hspace=0., 
         height_ratios=wh_ratios) 

perché wh_ratios == [0.0, 1.0, 0.0] di default così gli altri due sottotrame sopra e sotto sono 0 volte la dimensione della trama centrale.

ho messo quello che ho fatto a capirlo in an IPython notebook

+0

Ho notato che se assegnassi alla funzione 'colorbar()' un argomento 'ax':' plt.colorbar (sth, ax = ax) ', la geometria di' ax' verrà modificata, ad es. ax è creato 'ax = fig.add_subplot (2,3,4)', quindi dopo che la barra di colore ha tracciato la sua geometria sarà cambiata in "(2,1,1)" sempre, penso che (2,1,1) sia la trama stessa e (2,1,2) è la barra dei colori. Se creo un nuovo 'ax2 = fig.add_subplot (2,3,4)', la geometria di ax2 è di nuovo (2,1,1). Questo potrebbe essere considerato un bug? – Jason

Problemi correlati