看起来你需要的是 axvspan
,而不是其中的一个填充函数。它们的区别在于,axvspan
(以及axhspan
)将填充整个绘图的y(或x)范围,而不管你如何缩放。
例如,让我们使用 axvspan
来突出显示8和14之间的x区域:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, alpha=0.5, color='red')
plt.show()
你可以使用fill_betweenx
来实现这个功能,但是矩形的范围(无论是x轴还是y轴)都将处于数据坐标中。而使用axvspan
时,矩形的y范围默认为0和1,并且位于轴坐标中(换句话说,是图像高度的百分比)。
为了说明这一点,让我们将矩形从高度的10%延伸到90%(而不是占据全部范围)。尝试缩放或平移,注意在显示空间中y范围保持不变,而x范围随着缩放/平移而移动:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, ymin=0.1, ymax=0.9, alpha=0.5, color='red')
plt.show()
![这里输入图片描述](https://istack.dev59.com/WWzZI.webp)
fill_between
来实现更“波动”的垂直线条感兴趣的人,可以看一下transform
参数(以及这个答案)。 - Mr Tsjolder