在matplotlib中的两条垂直线之间的FIll

我通过了matplotlib文档中的例子 ,但是我不清楚怎么做一个填充两个特定垂直线之间的区域。

例如,假设我想在x=0.2x=4之间创build一个图(对于图的全部y范围)。 我应该使用fill_betweenfill还是fill_betweenx

我可以使用where条件吗?

这听起来像你想要axvspan ,而不是函数之间的填充。 不同的是axvspan (和axhspan )会填满整个y(或x)范围的情节,不pipe你如何缩放。

例如,让我们使用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() 

在这里输入图像说明