如何在 Matplotlib 中的多個線條之間進行填充

Suraj Joshi 2021年7月18日
如何在 Matplotlib 中的多個線條之間進行填充

我們可以在 Python Matplotlib 中使用 matplotlib.pyplot.fill_between() 方法來填充多個線條之間的區域。fill_between() 函式一次填充兩條線之間的空間,但我們可以選擇一對行來填充多個線條之間的區域。

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

輸出:

多個線條之間的先決條件填充 Matplotlib

在圖中,我們需要填充多邊形,使其滿足以下條件。

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

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

輸出:

 Matplotlib 多個線條之間的填充

為了滿足上述給定的條件,我們設定 y 軸極限為 010,使 y >= 0 作為第一步。

由於線段 y=6-xy=8-4x 相交,確保 y <= 8- 4xy <= 6 - x 都滿足,我們用 minimum() 方法選擇符合這兩個條件的點。

最後,我們填充 y1y4 之間的區域,提供需求指定的多邊形區域。

另外,我們也可以找到線的交點,作為區域的角點。一旦我們知道角點,我們就可以使用 matplotlib.pyplot.fill() 方法填充多邊形。

import matplotlib.pyplot as plt

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

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

輸出:

使用填充方法繪製一個帶有角點的多邊形

這種方法用拐角點填充多邊形,(2,4),(4,2),(2,0)(0,2)

列表 x 代表多邊形角點的 x 座標,y 代表多邊形角點的 y 座標。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

相關文章 - Matplotlib Lines