Ocultar valores de eje pero mantener etiquetas de marca de eje en matplotlib


101

Tengo esta imagen:

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

ingrese la descripción de la imagen aquí

Quiero ocultar los números; si uso:

plt.axis('off')

... obtengo esta imagen:

ingrese la descripción de la imagen aquí

También oculta las etiquetas Vy t. ¿Cómo puedo mantener las etiquetas mientras oculto los valores?

Respuestas:


137

Si usa el enfoque orientado a objetos matplotlib , esta es una tarea simple usando ax.set_xticklabels()y 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
Funciona muy bien para eliminar las etiquetas de las marcas, pero aún así aparecen las marcas ...
— Andrew Schreiber

85

Sin un subplots, puede eliminar universalmente las marcas de esta manera:

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

44

Esto funciona muy bien. Solo pega esto antes plt.show():

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

Auge.


2
Gracias, esto funciona muy bien. En los otros casos, los ticks se conservan (porque la dirección del tick está fuera de forma predeterminada)
— user140259

A diferencia de respuestas como ax.set_xticklabels ([]), esta funciona perfectamente para el siguiente caso: uno usa subtramas con la opción sharex y quiere eliminar ticks solo para una de las subtramas.
— Михаил Лисаков

¡Excelente! Y plt.gca (). Axes.get_xaxis (). Set_visible (False) para deshacerse también de las etiquetas y ticks del eje x.
— fbparis

1
o si ya tiene el objeto ax,ax.xaxis.set_visible(False)
— spinup

1
@filip Me alegro de que haya ayudado :)
— MRT

3

No estoy seguro de que sea la mejor manera, pero ciertamente puede reemplazar las etiquetas de marca de esta manera:

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

En Python 3.4, esto genera una gráfica de línea simple sin etiquetas de marca en el eje x. Un ejemplo simple está aquí: http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

Esta pregunta relacionada también tiene algunas sugerencias mejores: Ocultar el texto del eje en diagramas de matplotlib

Soy nuevo en Python. Su kilometraje puede variar en versiones anteriores. ¿Quizás otros puedan ayudar?


2

para eliminar las marcas de graduación por completo, use:

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

de lo contrario ax.set_yticklabels([])y ax.set_xticklabels([])mantendrá marcas de verificación.


Cuando lo intento ax.set_yticks([], []), recibo la siguiente advertencia: "MatplotlibDeprecationWarning: Pasar el parámetro menor de set_xticks () posicionalmente está en desuso desde Matplotlib 3.2; el parámetro se convertirá en solo palabra clave dos versiones menores más adelante". ¿Cuál es la alternativa correcta?
— Rylan Schaeffer

@RylanSchaeffer, en su ejemplo ax.set_yticks([], [])está pasando 2 listas vacías que causan errores. ¿Por qué hacer eso? Consulte el manual de comandos. Si el primer argumento no se debe pasar posicionalmente, pasarlo con la palabra clave: ax.set_yticks(ticks=[]).
— Ruslan S.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.