gpt4 book ai didi

python - 如何将 axvfill 与 bool 系列一起使用

转载 作者:行者123 更新时间:2023-11-28 22:29:08 31 4
gpt4 key购买 nike

我有一个 bool 时间序列,我想用它来确定应该着色的绘图部分。

目前我有:

ax1.fill_between(data.index, r_min, r_max, where=data['USREC']==True, alpha=0.2)

其中,r_minr_max 只是 y 轴的最小值和最大值。

但是 fill_between 并没有一直填充到绘图的顶部和底部,因为,所以我想改用 axvspan()

鉴于 axvspan 只需要坐标,是否有任何简单的方法可以做到这一点?所以我能想到的唯一方法是将所有彼此相邻且为 True 的日期分组,然后获取这些日期中的第一个和最后一个日期并将它们传递给 axvspan。

谢谢

最佳答案

如果愿意,您仍然可以使用 fill_between。但是,您可以在轴坐标中指定它们,而不是在数据坐标中指定 y 坐标(事先不清楚,它们需要多大)。这可以使用变换来实现,其中 x 部分在数据坐标中,y 部分在轴坐标中。 xaxis变换就是这样一种变换。 (这并不奇怪,因为 x 轴始终独立于 y 坐标。)所以

ax.fill_between(data.index, 0,1, where=data['USREC'], transform=ax.get_xaxis_transform())

会完成这项工作。

这是一个完整的例子:

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(0)

x = np.linspace(0,100,350)
y = np.cumsum(np.random.normal(size=len(x)))
bo = np.zeros(len(y))
bo[y>5] = 1

fig, ax = plt.subplots()
ax.fill_between(x, 0, 1, where=bo, alpha=0.4, transform=ax.get_xaxis_transform())

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

enter image description here

关于python - 如何将 axvfill 与 bool 系列一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43233552/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com