grid
¿Cómo agregar un grid a un gráfico de matplotlib?
Si quieres mostrar un grid en tu gráfico tan solo tienes que llamar a la función grid
de matplotlib después de crear un gráfico.
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Grid
ax.grid()
# plt.show()
Grid para el eje X
El grid se agrega por defecto tanto para el eje X como para el Y, pero es posible establecerlo solo para uno de ellos. Por un lado, si quieres agregar un grid a las marcas del eje X puedes establecer el argumento axis
como "x"
.
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Grid del eje X
ax.grid(axis = "x")
# plt.show()
Grid para el eje Y
Por otro lado, si quieres mostrar el grid para el eje Y tan solo tienes que establecer el argumento axis
como "y"
.
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Grid del eje Y
ax.grid(axis = "y")
# plt.show()
Grid debajo de los puntos
En los ejemplos anteriores las líneas que conforman el grid se dibujaban por encima de los puntos. Sin embargo, es posible agregarlas por debajo de ellos estableciendo set_axisbelow
como True
.
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Grid
ax.grid()
ax.set_axisbelow(True) # Grid debajo
# plt.show()
Grid principal
La función grid
proporciona un argumento llamado which
. Estableciendo este argumento como "major"
todos los estilos se aplicarán solo al grid principal.
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Grid principal
ax.grid(which = "major")
# plt.show()
Grid secundario
Si estableces el argumento which
como "minor"
podrás personalizar los ajustes del grid secundario. Sin embargo, si no llamas a la función minorticks_on
el grid secundario no se mostrará.
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Grid secundario
ax.grid(which = "minor")
ax.minorticks_on()
# plt.show()
Grid secundario sin marcas en los ejes
En el ejemplo anterior, al utilizar la función minorticks_on
, las marcas secundarias de los ejes se mostrarán. Si prefieres no mostrar esas marcas puedes eliminarlas utilizando la siguiente línea de código:
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Grid secundario
ax.grid(which = "minor")
ax.minorticks_on()
ax.tick_params(which = "minor", bottom = False, left = False)
# plt.show()
Grid principal y secundario a la vez
Estableciendo which
como both
podrás mostrar tanto el grid principal como el secundario siempre y cuando también llames a la función minorticks_on
. Una alternativa es agregar cada grid por separado, lo que te permitirá establecer ajustes de manera independiente para cada grid.
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Grid principal y secundario
ax.grid(which = "both")
ax.minorticks_on()
ax.tick_params(which = "minor", bottom = False, left = False)
# Alternativa:
# ax.grid(which = "major")
# ax.grid(which = "minor")
# ax.minorticks_on()
# plt.show()
Las propiedades del grid se pueden personalizar a través de varios parámetros. Ten en cuenta que puedes aplicar estos estilos para todo el grid o crear varios grids (con axis
o which
) y aplicar los estilos que quieras para cada uno de ellos.
Color de las líneas
El color por defecto del grid se puede sobrescribir estableciendo un nuevo color con el argumento color
.
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Grid rojo
ax.grid(color = "red")
# plt.show()
Estilo de línea del grid
El estilo o tipo de línea utilizada para el grid se puede personalizar a través del argumento linestyle
o ls
. En el siguiente ejemplo agregamos una línea discontinua.
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Tipo de línea del grid
ax.grid(linestyle = "dashed")
# plt.show()
Grosor de las líneas
El grosor de las líneas se puede personalizar tanto para para el grid principal como para el secundario. Si utilizas ambos, lo más habitual es que el grid principal sea más grueso que el secundario. El argumento linewidth
o lw
se puede utilizar para este propósito.
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Grosor del grid
ax.grid(which = "major", linewidth = 1)
ax.grid(which = "minor", linewidth = 0.2)
ax.minorticks_on()
# plt.show()
Transparencia de las líneas
El argumento alpha
controla la transparencia de las líneas del grid. Este argumento es muy útil si quieres agregar un grid difuminado que se vea ligeramente.
import numpy as np
import matplotlib.pyplot as plt
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Transparencia del grid
ax.grid(linewidth = 1.5, alpha = 0.25)
# plt.show()
A veces, al crear un gráfico con un grid quieres personalizar la posición de las líneas del grid. Para ello puedes utilizar FixedLocator
y AutoMinorLocator
de matplotlib.ticker
y las funciones set_[major|minor]_locator
. Lo mismo se aplica para el eje Y y para el grid secundario. Sin embargo, también podrías utilizar la función AutoMinorLocator
para crear N-1 líneas separadas uniformemente entre el grid principal. Consulta el siguiente ejemplo a modo aclaratorio.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import AutoMinorLocator, FixedLocator
# Datos de ejemplo y gráfico
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.scatter(x, y)
# Ambos grids
ax.grid(which = "major")
ax.grid(which = "minor", alpha = 0.2)
# Posiciones del grid principal para el eje X
ax.xaxis.set_major_locator(FixedLocator([1, 3, 5]))
# Posiciones del grid principal para el eje Y
ax.yaxis.set_major_locator(FixedLocator([2, 4]))
# Grid secundario dividio en 10 partes iguales entre cada grid del eje X
ax.xaxis.set_minor_locator(AutoMinorLocator(10))
# plt.show()
También te puede interesar