2013-02-05 12 views
14

C'è un modo in Matplotlib per impostare le zecche tra le etichette e l'asse come è di default in origine? La sezione degli esempi online non mostra un singolo grafico con questa funzione. Mi piace avere le zecche fuori dall'area di tracciamento perché a volte la trama nasconde i segni di spunta quando ci si trova all'interno.posizioni ticks matplotlib relative all'asse

+0

da vicino relativo a http://stackoverflow.com/questions/14705904/matplotlib-ticks-thickness – tacaswell

risposta

27

Per impostare le giuste principali zecche:

ax = plt.gca() 
ax.get_yaxis().set_tick_params(direction='out') 
ax.get_xaxis().set_tick_params(direction='out') 
plt.draw() 

di impostare tutti zecche (minori e maggiori),

ax.get_yaxis().set_tick_params(which='both', direction='out') 
ax.get_xaxis().set_tick_params(which='both', direction='out') 
plt.draw() 

per impostare sia la x e l'asse y al tempo stesso:

ax = plt.gca() 
ax.tick_params(direction='out') 

axis level doc e axes level doc

Per spostare le etichette di spunta relative ai tick utilizzare pad. Paragono

ax.tick_params(direction='out', pad=5) 
plt.draw() 

con

ax.tick_params(direction='out', pad=15) 
plt.draw() 
+0

l'ultimo sembra funzionare bene. Ora devo trovare un modo per spostare le etichette di graduazione della stessa distanza. Infatti ho erroneamente inserito due volte la riga di codice 'ax.tick_params (which =' both ', direction =' out ', length = 25, width = 6)' e sorprendentemente ha ridotto la dimensione della trama della quantità necessaria per avere una trama perfetta Ma non so perché. – user1850133

+0

Ti sei ricordato di includere un 'plt.draw()'? Puoi regolare lo spazio tra l'etichetta e il segno di spunta con il 'pad' kwarg. – tacaswell

+0

qui http://matplotlib.org/api/pyplot_api.html?highlight=pyplot.draw#matplotlib.pyplot.draw; dicono che plt.draw() non è necessario è la sequenza di modifica termina con show(); anche se l'ho provato prima di controllare la definizione di plt.draw(): non ha cambiato nulla. che cos'è il pad? – user1850133

0

Credo che avete bisogno di questo:

Ottenendo l'oggetto sottotrama si può giocare con i tuoi zecche

ax = plt.subplot(111) 
yax = ax.get_yaxis() 
plt.xticks(y_pos, city) 
xtickNames=ax.set_xticklabels(city) 
plt.setp(xtickNames, rotation=45, fontsize=10) 

Following is the output with 45 degrees rotated ticks

Problemi correlati