2012-06-05 14 views
15

Sto generando una figura sullo schermo che ha due sottotrame: una è un'immagine e l'altra è un grafico. I margini sono estremamente grandi attorno alle figure.Come impostare i margini per una cifra matplotlib?

Come si regolano i margini attorno alle cifre?


La maggior parte delle domande che ho cercato le immagini di risparmio coinvolti (Bbox sembrava perfetto), e utilizzando gli assi invece di sottotrame per il posizionamento assoluto.

Ecco il codice che ho usato per generare la figura:

def __init__(self, parent): 
    wx.Panel.__init__(self, parent) 
    ... 

    self.figure, (self.picture, self.intensity) = \ 
     plt.subplots(nrows=2, figsize=(12, 5)) 
    self.figure.set_dpi(80) 
    #self.figure.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1) 
    #self.picture.imshow(np.random.uniform()) #size=(5, 50))) 
    self.intensity.plot(np.random.random()) #size=641)) 

    self.intensity.autoscale(axis='x', tight=True) 
+3

dai un'occhiata a plt.tight_layout() o plt.subplots_adjust() o fig.savefig (bbox_inches = 'tight') – bmu

+0

@bmu, penso che il tuo commento dovrebbe essere una risposta, no? – Yann

+1

Un sacco di funzioni funzionano solo per la modalità Pylab e il salvataggio di cifre. Voglio qualcosa che funzioni per un oggetto 'Figure'. – aitchnyu

risposta

24

Dai un'occhiata alla plt.tight_layout() o plt.subplots_adjust() o fig.savefig(bbox_inches='tight').

Con subplots_adjust è possibile regolare la maggior parte dei parametri, mentre tight_layout() e bbox_inches='tight' sono più o meno semi automatici.

-3

È inoltre possibile utilizzare plt.set(), con gli attributi indicati nel menu di regolazione del grafico, ad es. set (top = 0.82) ecc.

+1

Non funziona per me. Si prega di indicare una risposta più elaborata. – toom

+0

Non ho trovato matplotlib.pyplot.set nella documentazione http://matplotlib.org/api/pyplot_api.html – usernumber

+0

Probabilmente hanno cambiato le loro API negli ultimi 2 anni. – Tritlo

Problemi correlati