在matplotlib中的两条垂直线之间

Ame*_*ina 78 python matplotlib

我在去例子matplotlib的文件,但它不是我清楚我怎样才能使填充两个特定的垂直线之间的区域的曲线图.

例如,假设我想在x=0.2和之间创建一个绘图x=4(对于整个y绘图范围).我应该使用fill_between,fill还是fill_betweenx

我可以使用这个where条件吗?

Joe*_*ton 140

这听起来像你想要的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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您可以使用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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 那些对使用“ fill_between”获得更多“摆动”垂直线的解决方案感兴趣的人,可以看看“ transform”参数(以及[此答案](http://stackoverflow.com/a/4891658/4375377 )) (2认同)