Grillas en Matplotlib

Publicado por Andrea Navarro en

En este artículo veremos como mostrar y personalizar grillas para mejorar la lectura de los datos de nuestros gráficos con Matplotlib

Mostrar grilla

Las grillas pueden ayudar a leer los datos correspondientes a gráficos de linea, dispersión, barra, etc de Matplotlib. Son especialmente útiles para encontrar los valores ubicados lejos de los ejes cartesianos. Para mostrar la grilla en un gráfico se utiliza el método grid en el elemento correspondiente a los ejes y se lo configura como True.

import matplotlib.pyplot as plt

data = [44,25,30,29,40,45,22,10,36,45,20,13]
fig, ax = plt.subplots()
ax.plot(data,"g", linewidth=3)
ax.grid(True)
plt.show()

La grilla por defecto se dibujará siguiendo los marcadores de los ejes x e y con un color gris.

Mostrar grilla

Ancho

Para modificar el ancho de las lineas de la grilla debe agregarse el argumento linewidth al método grid.

import matplotlib.pyplot as plt

data = [44,25,30,29,40,45,22,10,36,45,20,13]
fig, ax = plt.subplots()
ax.plot(data,"g", linewidth=3)
ax.grid(linewidth=3)
plt.show()
Ancho grilla

Tipo de línea

Matplotlib permite cuatro diferentes tipos del lineas para el graficado de la grilla. Cada tipo puede expresarse con un símbolo o su palabra descriptiva. Para configurar el tipo de linea se utiliza el argumento linestyle del método grid.

import matplotlib.pyplot as plt

data = [44,25,30,29,40,45,22,10,36,45,20,13]
fig, ax = plt.subplots()
ax.plot(data,"g", linewidth=3)
ax.grid(linestyle='dotted', linewidth=2)
plt.show()

En este ejemplo se especificó un tipo de linea punteado:

Tipo linea grilla

A continuación se muestran los tipos de lineas aceptados:

Línea sólidasolid
Línea discontinuadashed
Línea de puntos:dotted
Línea de puntos y rayas-.dashdot

Color

Es posible especificar el color de la grilla con el argumento color del método grid. Este color puede describirse con cualquiera de los formatos de colores soportados por Matplotlib que incluyen RGB, RGBA, Hexadecimal, colores por nombre y otros.

import matplotlib.pyplot as plt

data = [44,25,30,29,40,45,22,10,36,45,20,13]
fig, ax = plt.subplots()
ax.plot(data,"g", linewidth=3)
ax.grid(color='#4260f5')
plt.show()
Color grilla

Grilla mayor y menor

Los gráficos en Matplotlib permiten dos tipos de grillas: mayor y menor.

La grilla mayor o grilla principal es mostrada por defecto en el gráfico. Esta muestra las lineas más importantes para la lectura del gráfico y está diseñada para ayudar a la visualización general del gráfico. . La grilla menor o grilla secuendaria, en cambio, no se muestra por defecto. Esta es más fina y permite mayor precisión en la lectura de los datos.

Para mostrar la grilla menor es necesario agregar el atributo which al método grid y pasarle como valor la opción minor.

import matplotlib.pyplot as plt

data = [44,25,30,29,40,45,22,10,36,45,20,13]
fig, ax = plt.subplots()
ax.plot(data,"g", linewidth=3)
ax.grid(which='minor')
ax.minorticks_on()
plt.show()

Se puede observar que contiene más lineas que las de la grilla mayor.

Grilla menor

Ambas grillas, mayor y menor, pueden mostrarse simultáneamente llamando dos veces al método grid , en uno de estos métodos el valor del atributo which tendrá el valor major y en el otro minor. Dentro de cada método puede especificarse un estilo de linea, color y ancho de linea para cada grilla.

import matplotlib.pyplot as plt

data = [44,25,30,29,40,45,22,10,36,45,20,13]
fig, ax = plt.subplots()
ax.plot(data,"g", linewidth=3)
ax.grid(which='major', color='#807d7d', linewidth=2)
ax.grid(which='minor', color='#cf7269', linewidth=1, linestyle='dashed')
ax.minorticks_on()
plt.show()

En este ejemplo la grilla menor tienen un color gris y un ancho de 2 con una linea continua , mientras que la linea menor tiene un color rojo, una linea de ancho 1 y un estilo de linea discontinuada.

Grilla mayor y menor

Posición lineas

Las posiciones de las lineas de la grilla mayor están dadas por los ticks que son utilizados para definir los valores de los ejes. Los valores por defecto de los ticks se colocará automáticamente dependiendo de los valores existentes en el gráficos.

Para especificar los valores de los ticks del eje x se utiliza el método set_xticks y se le pasa como argumento la lista de los valores que serán mostrados en el gráfico.

import matplotlib.pyplot as plt

data = [44,25,30,29,40,45,22,10,36,45,20,13]
fig, ax = plt.subplots()
ax.plot(data,"g", linewidth=3)
ax.set_xticks([0, 5, 10, 15])
ax.grid(linewidth=2)
plt.show()

Con esta configuración se ha modificado el rango de valores mostrados en el eje x, las etiquetas especificadas en dicho eje y las lineas de la grilla.

Grilla eje x

Si se quieren especificar losticks para el eje y se utiliza el método set_yticks y se le pasa nuevamente la lista de los valores .

import matplotlib.pyplot as plt

data = [44,25,30,29,40,45,22,10,36,45,20,13]
fig, ax = plt.subplots()
ax.plot(data,"g", linewidth=3)
ax.set_yticks([0, 10, 20, 30,40,50])
ax.grid(linewidth=2)
plt.show()

En este caso se han modificado los rangos, valores y grillas del eje y.

Grilla eje y

Ambos ticks pueden modificarse simultáneamente permitiendo que la grilla se dibuje solo en los valores especificados.

import matplotlib.pyplot as plt

data = [44,25,30,29,40,45,22,10,36,45,20,13]
fig, ax = plt.subplots()
ax.plot(data,"g", linewidth=3)
ax.set_xticks([0, 5, 10, 15])
ax.set_yticks([0, 10, 20, 30,40,50])
ax.grid(linewidth=2)
plt.show()
Grilla ejes x e y

En este artículo hemos visto diferentes técnicas para personalizar la grilla de un gráfico realizado con Matplotlib para facilitar la lectura de sus datos. También hemos visto cómo combinar la grilla menor y mayor para lograr lecturas más detalladas y cómo especificar la ubicación de las lineas de grilla modificando los ticks de nuestro gráficos.


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Andrea Navarro

- Ingeniera en Informática - Docente universitaria - Investigadora