对大于 2 条线的区域并集进行着色

Shading the union of areas greater than 2 lines

你能帮我把下面突出显示为红色的区域加阴影吗?

我使用“fill_between”尝试或阅读过的有关此主题的所有内容都将填满两行之间的区域。 然而,这实际上需要用大于 1/X 的区域遮蔽大于 Y=X UNION 的区域(在我的粗略示例中,它被遮蔽为红色。

如您所见,我的尝试总是导致填充线条之间区域的某种组合。

代码:

x = np.linspace(0.0,15.0,150)

y = x
y_ = 1/x

d = scipy.zeros(len(y))

fig, ax = plt.subplots(1,1)
ax.plot(x, y)
ax.plot(x, y_)
ax.legend(["y >= x", "y >= 1/x"])

ax.fill_between(x, y, y_, where=y_>d, alpha=0.5, interpolate=True)

感谢您的建议

此致, F.

这个呢?

import numpy as np
import matplotlib.pyplot as plt


x = np.linspace(0.0,15.0,150)

y = x
y_ = 1/x

ceiling = 100.0
max_y = np.maximum(y, y_)

d = np.zeros(len(y))

fig, ax = plt.subplots(1,1)
ax.plot(x, y)
ax.plot(x, y_)
ax.legend(["y >= x", "y >= 1/x"])

plt.ylim((0, 10))
ax.fill_between(x, max_y, ceiling, where=y_>d, alpha=0.5, interpolate=True)

plt.show()

即取两个函数的最大值(np.maximum),然后填充这个新的最大值函数和一些适当高的天花板之间的区域。

当然你也必须手动设置 y-lim 否则你的绘图将达到 y 的上限值。