我有一个布尔时间序列,我想用它来确定绘图中应加阴影的部分。
目前我有:
ax1.fill_between(data.index, r_min, r_max, where=data['USREC']==True, alpha=0.2)
其中, r_min 和 r_max 只是y轴的最小值和最大值。
但是fill_between不会一直填充到图的顶部和底部,因为,因此我想改用 axvspan() 。
给定axvspan仅采用坐标,有什么简单的方法可以做到这一点?因此,我能想到的唯一方法是将所有彼此相邻且均为True的日期分组,然后将这些日期的第一个和最后一个日期传递给axvspan。
谢谢
fill_between如果愿意,您仍然可以使用。但是,您可以在坐标轴中指定它们,而不是在数据坐标中指定y坐标(对于它来说,先验性尚不清楚,它们需要多大)。这可以通过使用变换来实现,其中x部分位于数据坐标中,而y部分位于轴坐标中。xaxis变换就是这样的变换。(这并不奇怪,因为x轴始终独立于ycoorinates。)
fill_between
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()