在matplotlib中填充两条垂直线

时间:2014-04-23 15:10:56

标签: python matplotlib

我浏览了matplotlib文档中的examples,但我不清楚如何制作填充两条特定垂直线之间区域的图。

例如,假设我要在x=0.2x=4之间创建一个情节(对于情节的完整y范围)。我应该使用fill_betweenfill还是fill_betweenx

我可以使用where条件吗?

1 个答案:

答案 0 :(得分:123)

听起来你想要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()

enter image description here

您可以使用fill_betweenx执行此操作,但矩形的范围(x和y)将位于数据坐标中。对于axvspan,矩形的y范围默认为0和1,并且位于轴坐标中(换句话说,绘图高度的百分比)。

为了说明这一点,让我们将矩形从高度的10%延伸到90%(而不是占据整个范围)。尝试缩放或平移,并注意y-extents在显示空间中固定,而x-extents随zoom / pan移动:

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()

enter image description here