Para crear un gráfico de líneas con matplotlib tan solo necesitas dos arrays que representen los valores de los ejes X e Y. Los siguientes datos serán utilizados para fines ilustrativos en los ejemplos de este tutorial.
import numpy as np
# Datos
x = np.linspace(0, 10, 25)
y = np.sin(x) + x/2
plot
Utilizando los datos anteriores puedes crear un gráfico de líneas de manera muy sencilla en Python con la función plot
.
import numpy as np
import matplotlib.pyplot as plt
# Datos
x = np.linspace(0, 10, 25)
y = np.sin(x) + x/2
# Gráfico de líneas
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
Color de la línea
El gráfico se puede personalizar a través de argumentos adicionales. Por ejemplo, si quieres cambiar el color de fondo de la línea puedes utilizar el argumento color
y especificar un nuevo color.
import numpy as np
import matplotlib.pyplot as plt
# Datos
x = np.linspace(0, 10, 25)
y = np.sin(x) + x/2
# Gráfico de líneas
fig, ax = plt.subplots()
ax.plot(x, y, color = "r")
# plt.show()
Grosor de línea
Para cambiar el grosor por defecto de la línea puedes pasar un número entero a linewidth
o a lw
.
import numpy as np
import matplotlib.pyplot as plt
# Datos
x = np.linspace(0, 10, 25)
y = np.sin(x) + x/2
# Gráfico de líneas
fig, ax = plt.subplots()
ax.plot(x, y, linewidth = 4)
# ax.plot(x, y, lw = 4) # Equivalente
# plt.show()
Estilo de línea
Por defecto, el gráfico de líneas se crea con una línea continua, pero el argumento linestyle
o ls
permite crear líneas discontinuas ("--"
), discontinuas con puntos ("-."
) o líneas punteadas (":"
).
import numpy as np
import matplotlib.pyplot as plt
# Datos
x = np.linspace(0, 10, 25)
y = np.sin(x) + x/2
# Gráfico de líneas
fig, ax = plt.subplots()
ax.plot(x, y, linestyle = "--")
# ax.plot(x, y, ls = "--") # Equivalente
# plt.show()
Agregar símbolos (marcadores) a los puntos
Puedes agregar marcadores a cada par de coordenadas con el argumento marker
. Existen muchos símbolos diferentes en matplotlib para elegir, como "o"
para círculos, "*"
para estrellas o "D"
para diamantes, entre otros. Además, puedes utilizar el argumento markersize
o ms
para incrementar o reducir el tamaño de los símbolos.
import numpy as np
import matplotlib.pyplot as plt
# Datos
x = np.linspace(0, 10, 25)
y = np.sin(x) + x/2
# Gráfico de líneas
fig, ax = plt.subplots()
ax.plot(x, y, marker = "o", markersize = 5)
# ax.plot(x, y, marker = "o", ms = 5) # Equivalente
# plt.show()
Línea y símbolos con colores diferentes
Si quieres establecer un color diferente para la línea y para los marcadores tendrás que usar el argumento markerfacecolor
(o mfc
) para cambiar el color de fondo de los símbolos y el argumento markeredgecolor
(o mec
) para personalizar el color de borde de los marcadores, tal y como se muestra en el ejemplo de abajo.
import numpy as np
import matplotlib.pyplot as plt
# Datos
x = np.linspace(0, 10, 25)
y = np.sin(x) + x/2
# Gráfico de líneas
fig, ax = plt.subplots()
ax.plot(x, y, color = "r", marker = 's',
markerfacecolor = 'black', markeredgecolor = 'black')
# ax.plot(x, y, color = "r", marker = 's', mfc = 'black', mec = 'black') # Equivalente
# plt.show()
Usar un formato (fmt) para establecer los estilos
La función plot
proporciona un método alternativo para establecer los símbolos, colores y estilos de línea con un formato específico mediante textos con un formato específico: fmt = '[marcador][línea][color]'
, siendo cada uno de los elementos opcional. En el siguiente ejemplo establecemos "*g-"
, es decir, como símbolo usamos las estrellas (*
), color verde (g
) y una línea continua (-
).
import numpy as np
import matplotlib.pyplot as plt
# Datos
x = np.linspace(0, 10, 25)
y = np.sin(x) + x/2
# Gráfico de líneas
fig, ax = plt.subplots()
ax.plot(x, y, "*g-")
plt.show()
Es posible agregar varias series al gráfico. Para ello existen varias opciones y la selección de una u otra dependerá de lo que necesites.
Opción 1: llamar varias veces a la función plot
Esta es la opción más sencilla para crear un gráfico de líneas con varias líneas en matplotlib, pero si quieres agregar muchas series deberías agregarlas a través de un bucle for. Ten en cuenta que puedes agregar una leyenda automática estableciendo las etiquetas con el argumento label
y utilizando la función legend
.
import numpy as np
import matplotlib.pyplot as plt
# Datos
x1 = np.linspace(0, 10, 25)
y1 = np.sin(x) + x/2
x2 = np.linspace(0, 10, 25)
y2 = np.cos(x) + x/2
# Gráfico de líneas
fig, ax = plt.subplots()
ax.plot(x1, y1, marker = "o", label = "Sin(x) + x/2")
ax.plot(x2, y2, marker = "o", label = "Cos(x) + x/2")
ax.legend()
# plt.show()
Opción 2: especificar varios conjuntos de datos
Esta alternativa ahorra líneas de código, pero en este momento hasta donde alcanza nuestro conocimiento no existe una manera rápida de utilizar el argumento labels
para agregar etiquetas como en el ejemplo anterior.
import numpy as np
import matplotlib.pyplot as plt
# Datos
x1 = np.linspace(0, 10, 25)
y1 = np.sin(x) + x/2
x2 = np.linspace(0, 10, 25)
y2 = np.cos(x) + x/2
# Gráfico de líneas
fig, ax = plt.subplots()
ax.plot(x1, y1, "c^", x2, y2, "d--")
# plt.show()
La última opción es crear arrays 2D y pasarlos a la función.
step
Matplotlib proporciona otra función para crear un tipo de gráfico de líneas llamado gráfico de escalera o step plot, donde los puntos se unen en forma de escalera. La función se llama step
y se comporta de igual forma que plot
.
import numpy as np
import matplotlib.pyplot as plt
# Datos
x = np.linspace(0, 10, 25)
y = np.sin(x) + x/2
# Gráfico de líneas
fig, ax = plt.subplots()
ax.step(x, y)
# plt.show()
La única diferencia entre step
y plot
es que la primera tiene el argumento where
, que define dónde se colocan los pasos. Las posibles opciones son "pre"
(por defecto), "post"
y "mid"
.
import numpy as np
import matplotlib.pyplot as plt
# Datos
x = np.linspace(0, 10, 25)
y = np.sin(x) + x/2
# Gráfico de líneas
fig, ax = plt.subplots()
ax.step(x, y, where = "post")
# plt.show()
También te puede interesar