2010-06-03 13 views

risposta

28

Sembra matplotlib rispetta queste impostazioni come rcParams:

pylab.rcParams['xtick.major.pad']='8' 
pylab.rcParams['ytick.major.pad']='8' 

Seleziona i prima di creare qualsiasi figure e si dovrebbe andare bene.

Ho guardato il codice sorgente e non sembra esserci alcun altro modo per impostarli a livello di codice. (tick.set_pad() sembra che cerchi di fare la cosa giusta, ma il padding sembra essere impostato quando le zecche sono costruite e non può essere cambiato dopo.)

13

Questo può essere fatto usando set_pad ma tu quindi necessario ripristinare l'etichetta ...

for tick in ax.get_xaxis().get_major_ticks(): 
    tick.set_pad(8.) 
    tick.label1 = tick._get_text1() 
+4

Vorrei suggerire che il brutto qui è alquanto irrilevante e che questa è ancora una buona soluzione. Ci sono molte occasioni in cui non stai facendo una trama sulla stessa figura. Ciò significa che rcParams non è una soluzione perché vuoi evitare le impostazioni globali. – MikeGM

+0

@MikeGM: In retrospettiva, sono d'accordo con te per i motivi che hai menzionato. Prenderò la mia descrizione di questo come brutto, anche se il reset delle etichette non è esattamente elegante. Grazie per il tuo commento – tom10

42

Se non si desidera modificare la spaziatura a livello globale (per la modifica rcParams), e vogliono un approccio più pulito, provate questo:

ax.tick_params(axis='both', which='major', pad=15)

o solo per asse x

ax.tick_params(axis='x', which='major', pad=15)

+3

Questo è molto più semplice dell'iterazione tramite tick per un singolo grafico. Grazie! Per un singolo asse puoi anche usare: 'ax.xaxis.set_tick_params (pad = n)' – jonchar

+0

Molto difficile per un lettore inesperto capire cosa sia l'ascia. Se lo ottengo con ax = plt.gca(), il comando sposta solo le etichette. –

Problemi correlati