在matplotlib中的两条垂直线之间填充

2024-06-01 04:54:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我可以使用where条件吗?


Tags: 文档区域绘图matplotlib绘制betweenwhere条件
1条回答
网友
1楼 · 发布于 2024-06-01 04:54:38

听起来你想要的是^{},而不是函数之间的填充。区别在于,axvspan(和^{})将填充整个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向范围在显示空间中显示为“固定”,而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()

enter image description here

相关问题 更多 >