Enchimento Entre Múltiplas Linhas em Matplotlib
Podemos preencher uma área entre múltiplas linhas em Matplotlib utilizando o método matplotlib.pyplot.fill_between()
. A função fill_between()
preenche o espaço entre duas linhas de cada vez, mas podemos seleccionar um par de linhas para preencher a área entre múltiplas linhas.
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:
Na figura, precisamos de preencher o polígono de modo a que as seguintes condições sejam satisfeitas:
y <= 8- 4x
y <= 6 - x
y >= 2 - 2x
y >= 0
Preencher entre várias linhas em 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:
Para satisfazer a condição dada acima, estabelecemos o limite do eixo y entre 0
e 10
para que y >= 0
como o primeiro passo.
Como as linhas y=6-x
e y=8-4x
se intersectam entre si, assegurando que y <= 8- 4x
e y <= 6 - x
são ambas satisfeitas, utilizamos o método minimum()
para seleccionar os pontos que seguem as duas condições.
Finalmente, preenchemos a área entre y1
e y4
para abastecer a região poligonal especificada pela exigência.
Em alternativa, podemos encontrar os pontos de intersecção das linhas, que actuam como pontos de canto das áreas. Uma vez conhecidos os pontos de canto, podemos preencher o polígono utilizando o 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:
Este método preenche o polígono com pontos de canto, (2,4)
, (4,2)
, (2,0)
e (0,2)
.
A lista x
representa as x coordenadas dos pontos de canto do polígono, e a y
representa as y coordenadas dos pontos de canto do polígono.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn