0

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

在此处输入图像描述

我使用“fill_between”在该主题上尝试或阅读的所有内容都将填充行之间的区域。但是,这实际上需要用大于 1/X 的区域对大于 Y=X UNION'd 的区域进行着色(在我的粗略示例中将其着色为红色。

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

代码:

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。

4

1 回答 1

1

那这个呢?

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 的上限。

于 2020-11-28T18:45:51.623 回答