Matplotlib: Desactivar eje (espinas, etiquetas de marca, etiquetas de eje y cuadrícula)

En esta guía, veremos cómo desactivar el eje, así como sus elementos constituyentes individualmente en Matplotlib.

Introducción

Matplotlib es una de las bibliotecas de visualización de datos más utilizadas en Python. Gran parte de la popularidad de Matplotlib proviene de sus opciones de personalización: puede modificar casi cualquier elemento de su jerarquía de objetos.

En este tutorial, veremos cómo desactivar el eje de un gráfico de Matplotlib. Es decir, cómo desactivar elementos individuales, como etiquetas de marca, cuadrícula, marcas y espinas individuales, pero también cómo desactivarlos todos como grupo, denominados colectivamente como eje.

La mayoría de los enfoques que cubriremos funcionan de la misma manera para gráficos 2D y 3D: las clases regulares Axes y Axes3D tienen los mismos métodos para esto. Para algunos, dado que los gráficos en 3D tienen más de dos espinas, no serán iguales.

Nota: En el resto de esta guía, usaremos un gráfico 3D, ya que este es un caso más común en el que es posible que desee desactivar las espinas dorsales y las marcas, y dejar que los datos hablen por sí mismos. así como un gráfico 2D en el mismo conjunto de datos.

Específicamente usaremos una recreación de los datos del pulsar CP1919, descubiertos por Jocelyn Bell Burnell en 1967, visualizados por Harold D. Craft, Jr. en su [Tesis doctoral en 1970](https://www.worldcat.org/title/radio-observations-of-the-pulse-profiles-and-dispersion-measures-of-twelve-pulsars -by-harold-d-craft-jr/oclc/657635342) y popularizado por [Pedro Saville](https://en.wikipedia.org/wiki/Peter_Saville_(graphic_designer) en 1979, cuando la banda inglesa Joy Division estaba buscando lanzar un nuevo álbum - "Unknown Pleasures":

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

df = pd.read_csv(r"https://raw.githubusercontent.com/wikihtp/CP1919/master/data-raw/clean.csv")
groups = df.groupby(['line'])

plt.style.use('dark_background')

fig = plt.figure(figsize=(6, 8))

ax = fig.add_subplot(111, projection='3d')
ax.set_xlabel('Line Number')
ax.set_ylabel('Time')
ax.set_zlabel('Intensity')

for group in groups:
    line = ax.plot(group[1]['line'], group[1]['x'], group[1]['y'], color='white')

plt.show()

Lo que resulta en:

Gráfico Ridge 3D en Matplotlib - CP1919

Si desea obtener más información sobre Ridge Plots (que se muestra arriba), crear una base en Matplotlib y explorar el uso avanzado de la biblioteca, asegúrese de consultar nuestro Paquete de libros electrónicos de visualización de datos en Python. Esta visualización específica se toma directamente del libro, de una sección más larga dedicada a este conjunto de datos y la historia de la trama.

Ahora, echemos un vistazo a cómo eliminar las espinas, las etiquetas de marca, las marcas, la cuadrícula y las etiquetas de eje.

Apagando el Eje con ax.axis('off')

La forma más sencilla de desactivar todo lo relacionado con ejes es a través de una función de conveniencia: axis('off') en su instancia Axes o Axes3D:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Load dataset in and set style...

fig = plt.figure(figsize=(6, 8))

ax = fig.add_subplot(111, projection='3d')
ax.set_xlabel('Line Number')
ax.set_ylabel('Time')
ax.set_zlabel('Intensity')
ax.axis('off')

for group in groups:
    line = ax.plot(group[1]['line'], group[1]['x'], group[1]['y'], color='white')

plt.show()

Nota: También puede usar la función axis('off') en la instancia plt si está trazando usando la API estilo MATLAB. Sin embargo, se desaconseja este enfoque si está trazando utilizando la API OOP como lo estamos haciendo actualmente.

Este cambio en el código da como resultado una gráfica sin espinas, líneas de eje, marcas, etiquetas de marca, etiquetas de eje y cuadrícula:

Desactivar eje con axis(\'off\')

La función axis() es una función conveniente para acceder a varias propiedades.

Apagando el eje con ax.set_axis_off()

Alternativamente, puede usar la función ax.set_axis_off(), en conjetura con la función ax.set_axis_on(), que invierte los efectos anteriores.

Este es un conjunto de funciones muy útil para usar al actualizar gráficos, como al animarlos, o cuando desee activar y desactivar el eje, en lugar de simplemente desactivarlo:\

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Load dataset in and set style...

fig = plt.figure(figsize=(6, 8))

ax = fig.add_subplot(111, projection='3d')
ax.set_xlabel('Line Number')
ax.set_ylabel('Time')
ax.set_zlabel('Intensity')
ax.set_axis_off()

for group in groups:
    line = ax.plot(group[1]['line'], group[1]['x'], group[1]['y'], color='white')

plt.show()

Esto da como resultado exactamente la misma trama:

Desactivar eje con set_axis_off()

Desactivar las marcas y las etiquetas de marcas en los ejes

En lugar de desactivar todos estos elementos y hacerlos invisibles, también puede desactivarlos individualmente si desea conservar algunos.

Aquí es donde volveremos a cambiar a un gráfico 2D, ya que algunas de estas funciones no funcionan con gráficos 3D, dado que tienen más que solo el eje X y el eje Y.

Por ejemplo, puede desactivar ejes individuales (marcas y etiquetas de marcas). Puedes usar get_yaxis() o get_xaxis() para obtener los ejes respectivos y apagarlos usando set_visible(False):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r"https://raw.githubusercontent.com/wikihtp/CP1919/master/data-raw/clean.csv")
groups = df.groupby(['line'])

plt.style.use('dark_background')
fig = plt.figure(figsize=(6, 8))

ax = fig.add_subplot(111)
ax.set_xlabel('Time')
ax.set_ylabel('Intensity')

ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)

for group in groups:
    line = ax.plot(group[1]['x'], group[1]['y'], color='white')

plt.show()

Esto desactiva las etiquetas de marca y marca, pero deja el marco (espinas) en:

Desactivar ticks y etiquetas de ticks de matplotlib

Desactivar espinas individuales en ejes

Para desactivar las espinas, puede acceder a ellas a través del diccionario ax.spines. Usando sus teclas, arriba, abajo, izquierda y derecha, puede seleccionar cada una, y usando la función set_visible(), desactivarlas.

Vamos a girar el lomo superior y derecho:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import pandas as pd
import matplotlib.pyplot as plt

# Load data and stylize

fig = plt.figure(figsize=(6, 8))

ax = fig.add_subplot(111)
ax.set_xlabel('Time')
ax.set_ylabel('Intensity')

ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
# To turn off the bottom or left
#ax.spines['bottom'].set_visible(False)
#ax.spines['left'].set_visible(False)

for group in groups:
    line = ax.plot(group[1]['x'], group[1]['y'], color='white')

plt.show()

Esto apaga el lomo superior y derecho, pero deja intactos el inferior y el izquierdo, así como las marcas y sus etiquetas:

desactivar espinas individuales en matplotlib

También puede iterar a través de ellos y desactivarlos todos:

1
2
for key, spine in ax.spines.items():
    spine.set_visible(False)

desactivar todas las espinas en matplotlib

Conclusión

En este tutorial, hemos repasado varias formas de desactivar el eje, así como componentes de eje individuales en Matplotlib.

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Vuélvase peligroso con la visualización de datos ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera. era.