Nascondi i valori degli assi ma mantieni le etichette delle tacche degli assi in matplotlib


101

Ho questa immagine:

plt.plot(sim_1['t'],sim_1['V'],'k')
plt.ylabel('V')
plt.xlabel('t')
plt.show()

inserisci qui la descrizione dell'immagine

Voglio nascondere i numeri; se uso:

plt.axis('off')

... ottengo questa immagine:

inserisci qui la descrizione dell'immagine

Nasconde anche le etichette Ve t. Come posso mantenere le etichette nascondendo i valori?

Risposte:


137

Se utilizzi l' approccio orientato agli oggetti matplotlib , questa è un'attività semplice che utilizza ax.set_xticklabels()e ax.set_yticklabels():

import matplotlib.pyplot as plt

# Create Figure and Axes instances
fig,ax = plt.subplots(1)

# Make your plot, set your axes labels
ax.plot(sim_1['t'],sim_1['V'],'k')
ax.set_ylabel('V')
ax.set_xlabel('t')

# Turn off tick labels
ax.set_yticklabels([])
ax.set_xticklabels([])

plt.show()

11
Funziona alla grande per rimuovere le etichette di spunta, ma ottieni comunque i segni di spunta ...
Andrew Schreiber

85

Senza un subplots, puoi rimuovere universalmente i segni di spunta in questo modo:

plt.xticks([])
plt.yticks([])

44

Funziona alla grande. Basta incollarlo prima plt.show():

plt.gca().axes.get_yaxis().set_visible(False)

Boom.


2
Grazie, funziona benissimo. Negli altri casi i tick vengono conservati (perché la direzione del tick è disattivata per impostazione predefinita)
user140259

A differenza delle risposte come ax.set_xticklabels ([]), questa funziona perfettamente per il seguente caso: si usano le sottotrame con l'opzione sharex e si vogliono eliminare i segni di spunta solo per una delle sottotrame.
Михаил Лисаков

Grande! E plt.gca (). Axes.get_xaxis (). Set_visible (False) per eliminare anche le etichette e le zecche dell'asse x.
fbparis

1
o se hai già l'oggetto ascia,ax.xaxis.set_visible(False)
spinup

1
@filip Sono contento che abbia aiutato :)
MRT

3

Non sono sicuro che questo sia il modo migliore, ma puoi sicuramente sostituire le etichette di spunta in questo modo:

import matplotlib.pyplot as plt
x = range(10)
y = range(10)
plt.plot(x,y)
plt.xticks(x," ")
plt.show()

In Python 3.4 questo genera un semplice grafico a linee senza etichette di graduazione sull'asse x. Un semplice esempio è qui: http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

Questa domanda correlata offre anche alcuni suggerimenti migliori: Nascondere il testo dell'asse nei grafici matplotlib

Sono nuovo in Python. Il tuo chilometraggio può variare nelle versioni precedenti. Forse altri possono aiutare?


2

per rimuovere completamente i segni di spunta utilizzare:

ax.set_yticks([])
ax.set_xticks([])

altrimenti ax.set_yticklabels([])e ax.set_xticklabels([])manterrà i segni di spunta.


Quando provo ax.set_yticks([], []), ricevo il seguente avviso: "MatplotlibDeprecationWarning: il passaggio del parametro minore di set_xticks () in modo posizionale è deprecato a partire da Matplotlib 3.2; il parametro diventerà solo parole chiave due versioni secondarie più tardi." Qual è l'alternativa giusta?
Rylan Schaeffer,

@RylanSchaeffer, nel tuo esempio ax.set_yticks([], [])stai passando 2 elenchi vuoti che causano errori. Perché farlo? Vedere il manuale dei comandi. Se il primo argomento non dovrebbe essere passato posizionale, passarlo con parola chiave: ax.set_yticks(ticks=[]).
Ruslan S.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.