如何避免与matplotlib.fill和wh

2024-03-29 05:03:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我想填充两条曲线之间的区域,但仅当较低的曲线大于等于0时。 我在matplotlib中使用fill_between()和{}条件(测试哪条曲线更大)和{}(测试较低的曲线是否为>;0)。但填充中存在间隙,因为下面的曲线在整数之间穿过x轴,而maximum的结果在处击中x轴。我该怎么解决这个问题?在

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10)
a = np.array([101, 102, 71, 56, 49, 15, 29, 31, 45, 41])
b = np.array([52, 39, 8, -7, -12, -45, -23, -9, 14, 19])

fig, ax = plt.subplots()
ax.plot(x, a)
ax.plot(x, b)
ax.fill_between(x, a, np.maximum(b, 0), where=a >= b, alpha=0.25)

plt.axhline(0, color='black')

enter image description here

(我希望白色三角形也被着色。)


Tags: importgt区域plotmatplotlibasnpplt
1条回答
网友
1楼 · 发布于 2024-03-29 05:03:28

通过使用^{}插值:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10)
a = np.array([101, 102, 71, 56, 49, 15, 29, 31, 45, 41])
b = np.array([52, 39, 8, -7, -12, -45, -23, -9, 14, 19])

x2 = np.linspace(x[0], x[-1] + 1, len(x) * 100)  # < -
a2 = np.interp(x2, x, a)                         # < -
b2 = np.interp(x2, x, b)                         # < -
x, a, b = x2, a2, b2                             # < -

fig, ax = plt.subplots()
ax.plot(x, a)
ax.plot(x, b)
ax.fill_between(x, a, np.maximum(0, b), where=a>b, alpha=0.25)

plt.axhline(0, color='black')

output

更新

^{pr2}$

应替换为:

x2 = np.linspace(x[0], x[-1], len(x) * 100)

updated output

相关问题 更多 >