pyplot python matplotlib plot

pyplot - plot() python



Ocultar el texto del eje en los gráficos de matplotlib (6)

¡Un truco podría ser configurar el color de las etiquetas de garrapatas como blanco para ocultarlo!

plt.xticks(color=''w'') plt.yticks(color=''w'')

Estoy tratando de trazar una figura sin marcas ni números en ninguno de los ejes (uso los ejes en el sentido tradicional, ¡no la nomenclatura de matplotlib!). Un problema que he encontrado es donde matplotlib ajusta las marcas de verificación x (y) al restar 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:

  1. Cómo desactivar este comportamiento en primer lugar (aunque en la mayoría de los casos es útil, ¡no siempre es así!) He matplotlib.axis.XAxis y no puedo encontrar nada apropiado

  2. ¿Cómo puedo hacer que N desaparezca (es decir, X.set_visible(False) )

  3. ¿Hay una mejor manera de hacer lo anterior de todos modos? Mi trama final serían las subplotaciones de 4x4 en una figura, si eso es relevante.


Algo de un hilo anterior, pero este parece ser un método más rápido usando la última versión de matplotlib:

Establecer el formateador principal para el eje x

ax.xaxis.set_major_formatter(plt.NullFormatter())


En lugar de ocultar cada elemento, puede ocultar todo el eje:

frame1.axes.get_xaxis().set_visible(False) frame1.axes.get_yaxis().set_visible(False)

O bien, puede establecer los ticks a una lista vacía:

frame1.axes.get_xaxis().set_ticks([]) frame1.axes.get_yaxis().set_ticks([])

En esta segunda opción, aún puede usar plt.xlabel() y plt.ylabel() para agregar etiquetas a los ejes.


En realidad, no pude renderizar una imagen sin bordes o datos de ejes en función de cualquiera de los fragmentos de código aquí (incluso el que se acepta en la respuesta). Después de revisar algunos documentos de la API, aterricé en este código para renderizar mi imagen.

plt.axis(''off'') plt.tick_params(axis=''both'', left=''off'', top=''off'', right=''off'', bottom=''off'', labelleft=''off'', labeltop=''off'', labelright=''off'', labelbottom=''off'') plt.savefig(''foo.png'', dpi=100, bbox_inches=''tight'', pad_inches=0.0)

Utilicé la llamada a tick_params para cerrar básicamente cualquier información adicional que pudiera ser procesada y tengo un gráfico perfecto en mi archivo de salida :). ¡Espero que esto ayude!


Si desea ocultar solo el texto del eje manteniendo las líneas de la cuadrícula:

frame1 = plt.gca() frame1.axes.xaxis.set_ticklabels([]) frame1.axes.yaxis.set_ticklabels([])

Hacer set_visible(False) o set_ticks([]) también ocultará las líneas de la cuadrícula.


Si eres como yo y no siempre recuperas los ejes, ax , al trazar la figura, entonces una solución simple sería hacer

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