Cómo rellenar entre múltiples líneas en Matplotlib

Suraj Joshi 18 julio 2021
Cómo rellenar entre múltiples líneas en Matplotlib

Podemos rellenar un área entre múltiples líneas en Matplotlib usando el método matplotlib.pyplot.fill_between(). La función fill_between() llena el espacio entre dos líneas a la vez, pero podemos seleccionar un par de líneas para llenar el área entre múltiples líneas.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.02)

y1 = 8 - 4 * x
y2 = 6 - x
y3 = 2 - 2 * x

plt.plot(x, y1, color="red", label="8-4x")
plt.plot(x, y2, color="blue", label="6-x")
plt.plot(x, y3, color="green", label="2-2x")
plt.legend()
plt.show()

Resultado:

Condición previa Rellenar entre múltiples líneas Matplotlib

En la figura, necesitamos llenar el polígono de tal manera que se cumplan las siguientes condiciones:

y <= 8- 4x
y <= 6 - x
y >= 2 - 2x
y >= 0

Rellenar entre múltiples líneas en Matplotlib

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.02)

y1 = 2 - 2 * x
y2 = 6 - x
y3 = 8 - 4 * x

y4 = np.minimum(y2, y3)

plt.plot(x, y1, color="red", label="2-2x")
plt.plot(x, y2, color="blue", label="6-x")
plt.plot(x, y3, color="green", label="8-4x")
plt.ylim(0, 10)
plt.fill_between(x, y1, y4, color="yellow")
plt.legend()
plt.show()

Resultado:

Rellenar entre múltiples líneas Matplotlib

Para satisfacer la condición dada arriba, fijamos el límite del eje y entre 0 y 10, de modo que y >= 0 como primer paso.

Como las líneas y=6-x y y=8-4x se cruzan entre sí, asegurando que y <= 8- 4x y y <= 6 - x se satisfacen ambas, usamos el método minimum() para seleccionar los puntos que siguen las dos condiciones.

Finalmente, rellenamos el área entre y1 y y4 para suministrar la región del polígono especificada por el requisito.

Alternativamente, podemos encontrar los puntos de intersección de las líneas, que actúan como puntos de esquina de las áreas. Una vez que conocemos los puntos de esquina, podemos rellenar el polígono usando el método matplotlib.pyplot.fill().

import matplotlib.pyplot as plt

x = [2, 4, 2, 0]
y = [4, 2, 0, 2]

plt.fill(x, y)
plt.show()

Resultado:

Trazar un polígono con puntos de esquina usando el método fill

Este método llena el polígono con puntos de esquina, (2,4), (4,2), (2,0) y (0,2).

La lista x representa las coordenadas x de los puntos de esquina del polígono, y la y representa las coordenadas y de los puntos de esquina del polígono.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Matplotlib Lines