2014-04-17 28 views
11

in Matlab, è semplice da ottenere e impostare la posizione di un assi presenti sulla figura:Matplotlib: ottenere e impostare gli assi posizione

pos = get(gca(), 'position') 
    set(gca(), 'position', pos) 

Come faccio a fare questo in Matplotlib?

ho bisogno di questo per due motivi correlati:

Questi sono i problemi specifici che sto cercando di risolvere:

  • Ho una colonna di sottotrame in cui alcuni hanno colorbars e alcuni non lo fanno e non hanno la stessa larghezza, ovvero gli assi X non si allineano. Il colorbar ruba lo spazio dagli assi. Questo succede anche in MATLAB, e lì userò il trucco di cui sopra per rendere tutti gli assi ugualmente ampi copiando la larghezza da un asse con una barra di colore a quelli senza.

  • aggiungere spazio tra le singole sottotrame mediante restringimento di un asse. La funzione adjust_subplots() regola tutte le sottotrame allo stesso modo.

risposta

32

La posizione degli assi di impostazione è simile in Matplotlib. È possibile utilizzare i get_position e SET_POSITION metodi del axes.

import matplotlib.pyplot as plt 

ax = plt.subplot(111) 
pos1 = ax.get_position() # get the original position 
pos2 = [pos1.x0 + 0.3, pos1.y0 + 0.3, pos1.width/2.0, pos1.height/2.0] 
ax.set_position(pos2) # set a new position 

Si potrebbe anche voler dare un'occhiata a GridSpec se non l'hai già.

+0

Ho provato e provato di nuovo, ma se gioco con set_position ho solo spostare il grafico nella mia finestra .. come posso tracciare gli assi X su y = 0 oy = -1 o in altre posizioni? – DaniPaniz