如何在 Matplotlib 中的多个线条之间进行填充

Suraj Joshi 2021年7月18日 2020年11月7日
如何在 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 坐标。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

相关文章 - Matplotlib Lines