Estoy tratando de trazar una figura sin marcas de verificación o números en cualquiera de los ejes (¡uso ejes en el sentido tradicional, no la nomenclatura matplotlib!). Un problema con el que me he encontrado es cuando matplotlib ajusta las marcas de verificación x (y) restando un valor N, luego agrega N al final del eje.
Esto puede ser vago, pero el siguiente ejemplo simplificado resalta el problema, siendo '6.18' el valor ofensivo de N:
import matplotlib.pyplot as plt
import random
prefix = 6.18
rx = [prefix+(0.001*random.random()) for i in arange(100)]
ry = [prefix+(0.001*random.random()) for i in arange(100)]
plt.plot(rx,ry,'ko')
frame1 = plt.gca()
for xlabel_i in frame1.axes.get_xticklabels():
xlabel_i.set_visible(False)
xlabel_i.set_fontsize(0.0)
for xlabel_i in frame1.axes.get_yticklabels():
xlabel_i.set_fontsize(0.0)
xlabel_i.set_visible(False)
for tick in frame1.axes.get_xticklines():
tick.set_visible(False)
for tick in frame1.axes.get_yticklines():
tick.set_visible(False)
plt.show()
Las tres cosas que me gustaría saber son:
Cómo desactivar este comportamiento en primer lugar (aunque en la mayoría de los casos es útil, ¡no siempre es así!) He examinado
matplotlib.axis.XAxis
y no puedo encontrar nada apropiado¿Cómo puedo hacer que N desaparezca (es decir
X.set_visible(False)
)¿Hay una mejor manera de hacer lo anterior de todos modos? Mi trama final sería subtramas 4x4 en una figura, si eso es relevante.
fuente
Respuestas:
En lugar de ocultar cada elemento, puede ocultar todo el eje:
O bien, puede configurar los ticks en una lista vacía:
En esta segunda opción, aún puede usar
plt.xlabel()
yplt.ylabel()
agregar etiquetas a los ejes.fuente
'Axes3DSubplot' object has no attribute 'get_zaxis'
get_xaxis().set_visible(False)
. Creo que matplotlib en este caso inicializa algunos parámetros como si el gráfico fuera 2D.ax.set_zticks([])
hará lo que quierasSi desea ocultar solo el texto del eje manteniendo las líneas de la cuadrícula:
Hacer
set_visible(False)
oset_ticks([])
también ocultará las líneas de la cuadrícula.fuente
Si eres como yo y no siempre recuperas los ejes
ax
, al trazar la figura, entonces una solución simple sería hacerfuente
Algo así como un hilo antiguo, pero este parece ser un método más rápido con la última versión de matplotlib:
establecer el formateador principal para el eje x
fuente
En realidad, no pude renderizar una imagen sin bordes o datos de eje basados en ninguno de los fragmentos de código aquí (incluso el aceptado en la respuesta). Después de buscar en la documentación de la API, llegué a este código para representar mi imagen
tick_params
Básicamente, utilicé la llamada para cerrar cualquier información adicional que pudiera presentarse y tengo un gráfico perfecto en mi archivo de salida.fuente
He codificado por colores esta figura para facilitar el proceso.
Puede tener control total sobre la figura usando estos comandos, para completar la respuesta también he agregado el control sobre las splines:
fuente
ax.set_xticklabels([])
yax.set_xticks([])
no funcionó para mí, pero loax.axes.get_xaxis().set_visible(False)
hizo.Cuando se utiliza la API orientada a objetos, el
Axes
objeto tiene dos métodos útiles para eliminar el texto del eje,set_xticklabels()
yset_xticks()
.Digamos que creas una trama usando
Si simplemente desea eliminar las etiquetas de marca, puede usar
o para eliminar las garrapatas por completo, puedes usar
Estos métodos son útiles para especificar exactamente dónde quiere los ticks y cómo quiere que se etiqueten. Al pasar una lista vacía, no hay marcas ni etiquetas, respectivamente.
fuente
¡Un truco podría ser configurar el color de las etiquetas de marca como blanco para ocultarlo!
fuente