Gráfico de líneas en matplotlib con la función plot

Conjunto de datos de muestra

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

Gráfico de líneas en matplotlib con la función 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()

Gráfico de líneas en matplotlib

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()

Cambiar el color de un gráfico de líneas en matplotlib

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()

Grosor de línea de un gráfico de líneas en Python

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()

Estilo o tipo de línea de un gráfico de matplotlib

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()

Gráfico de líneas con símbolos en matplotlib

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()

Línea y símbolos con colores diferentes en matplotlib

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()

Gráfico de líneas en Python con matplotlib

Gráfico con varias líneas

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.

Gráfico con múltiples líneas en Python

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.

Gráfico de líneas con dos líneas en Python

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.

Gráfico de escaleras (step plot) con 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()

Step plot en matplotlib

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()

Gráfico de escaleras en Python

Better Data Visualizations

A Guide for Scholars, Researchers, and Wonks

Comprar en Amazon

También te puede interesar