Cambiar la frecuencia de marca en Matplotlib

En este tutorial, repasaremos cómo cambiar la frecuencia de marca en Matplotlib, tanto para la figura completa como para la personalización de la frecuencia de marca a nivel de eje con ejemplos.

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 cambiar la frecuencia de marca en Matplotlib. Haremos esto tanto en el nivel de la figura como en el nivel del eje.

¿Cómo cambiar la frecuencia de marca en Matplotlib?

Comencemos con una trama simple. Graficaremos dos líneas, con valores aleatorios:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import matplotlib.pyplot as plt
import numpy as np

fig = plt.subplots(figsize=(12, 6))

x = np.random.randint(low=0, high=50, size=100)
y = np.random.randint(low=0, high=50, size=100)

plt.plot(x, color='blue')
plt.plot(y, color='black')

plt.show()

x e y van desde 0-50, y la longitud de estas matrices es 100. Esto significa que tendremos 100 puntos de datos para cada una de ellas. Luego, simplemente trazamos estos datos en el objeto Axes y los mostramos a través de la instancia plt de PyPlot:

plot random line plot in matplotlib

Ahora, la frecuencia de los ticks en el eje X es 20. Se configuran automáticamente a una frecuencia que parece adecuada para el conjunto de datos que proporcionamos.

A veces, nos gustaría cambiar esto. Tal vez queramos reducir o aumentar la frecuencia. ¿Qué pasaría si quisiéramos tener una marca en cada 5 pasos, no en 20?

Lo mismo ocurre con el eje Y. ¿Qué pasa si la distinción en este eje es aún más crucial y quisiéramos tener cada marca en cada paso?

Configuración de la frecuencia de marca a nivel de figura en Matplotlib

Vamos a cambiar la frecuencia de marca de nivel de figura. Esto significa que si tenemos múltiples Axes, los ticks en todos estos serán uniformes y tendrán la misma frecuencia:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import matplotlib.pyplot as plt
import numpy as np

fig = plt.subplots(figsize=(12, 6))

x = np.random.randint(low=0, high=50, size=100)
y = np.random.randint(low=0, high=50, size=100)

plt.plot(x, color='blue')
plt.plot(y, color='black')

plt.xticks(np.arange(0, len(x)+1, 5))
plt.yticks(np.arange(0, max(y), 2))

plt.show()

Puede usar las funciones xticks() y yticks() y pasar una matriz que indique los ticks reales. En el eje X, esta matriz comienza en 0 y termina en la longitud de la matriz x. En el eje Y, comienza en 0 y termina en el valor máximo de y. También puede codificar las variables.

El argumento final es el paso. Aquí es donde definimos qué tan grande debe ser cada paso. Tendremos una marca en cada “5” pasos en el eje X y una marca en cada “2” pasos en el eje Y:

change figure-level tick frequency matplotlib

Configuración de la frecuencia de marca de nivel de eje en Matplotlib

Si tiene varios gráficos en curso, es posible que desee cambiar la frecuencia de marca en el nivel del eje. Por ejemplo, querrá marcas raras en un gráfico, mientras que querrá marcas frecuentes en el otro.

Puede usar las funciones set_xticks() y set_yticks() en la instancia Axes devuelta al agregar subgráficos a una Figura. Vamos a crear una Figura con dos ejes y cambiemos la frecuencia de tic en ellos por separado:

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

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

ax = fig.add_subplot(121)
ax2 = fig.add_subplot(122)

x = np.random.randint(low=0, high=50, size=100)
y = np.random.randint(low=0, high=50, size=100)
z = np.random.randint(low=0, high=50, size=100)

ax.plot(x, color='blue')
ax.plot(y, color='black')
ax2.plot(y, color='black')
ax2.plot(z, color='green')

ax.set_xticks(np.arange(0, len(x)+1, 5))
ax.set_yticks(np.arange(0, max(y), 2))
ax2.set_xticks(np.arange(0, len(x)+1, 25))
ax2.set_yticks(np.arange(0, max(y), 25))

plt.show()

Ahora, esto resulta en:

change axis-level tick frequency in matplotlib

Conclusión

En este tutorial, hemos repasado varias formas de cambiar la frecuencia de marca en Matplotlib tanto a nivel de figura como a nivel de eje.

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.