2013-01-24 15 views
8

Spesso quando trama in matplotlib, ho grafici come questo:Aggiungere margine quando trame corrono contro il bordo del grafico

frequency response running along top edge

Non è possibile visualizzare la funzione, perché si corre contro il bordo di la trama.

Esiste un modo per automaticamente aggiungere un po 'di margine in questi casi, in modo che sembrano in questo modo:

frequency response with tiny amount of noise

+0

Ooh, potresti aggiungere piccole quantità di rumore per assicurarti che sia sempre leggermente superiore a 0? Qualcosa come 'h + = randn (len (h)) * spaziatura (abs (h)) * 100000'? – endolith

risposta

15

È possibile utilizzare ax.margins() per impostare il margins. Esempio:

In [1]: fig, ax = plt.subplots() 

In [2]: ax.plot(np.arange(10), '-o') 
Out[2]: [<matplotlib.lines.Line2D at 0x302fb50>] 

without margin

In [1]: fig, ax = plt.subplots() 

In [2]: ax.margins(0.05) 

In [3]: ax.plot(np.arange(10), '-o') 
Out[3]: [<matplotlib.lines.Line2D at 0x302fb50>] 

with margin

È anche possibile impostare solo la xo y margine. Tuttavia non sembra essere un'opzione matplotlibrc in modo da poter semplicemente rendere questo comportamento predefinito (quindi non è completamente automatico). Ho aperto un github issue per richiedere questo.

Problemi correlati