我通过去例子中matplotlib
的文件,但它不是我清楚我怎样才能使填充两个特定的垂直线之间的区域的曲线图。
例如,假设我要在x=0.2
和之间创建一个绘图x=4
(针对整个y
绘图范围)。我应该使用fill_between
,fill
还是fill_betweenx
?
我可以使用where
条件吗?
我通过去例子中matplotlib
的文件,但它不是我清楚我怎样才能使填充两个特定的垂直线之间的区域的曲线图。
例如,假设我要在x=0.2
和之间创建一个绘图x=4
(针对整个y
绘图范围)。我应该使用fill_between
,fill
还是fill_betweenx
?
我可以使用where
条件吗?
Answers:
听起来像是您想要的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()
fill_between
更多“摆动”垂直线的解决方案的人们请看一下transform
参数(以及此答案)