matplotlib 在两条垂直线之间填充[重复]

2cmtqfgy  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(143)

此问题已在此处有答案

How to highlight specific x-value ranges(2个答案)
两年前关门了。
我浏览了matplotlib文档中的examples,但我不清楚如何绘制填充两条特定垂直线之间区域的图。
例如,假设我想在x=0.2x=4之间创建一个图(对于图的整个y范围),我应该使用fill_betweenfill还是fill_betweenx
我可以使用where条件吗?

rqmkfv5c

rqmkfv5c1#

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

相关问题