Python matplotlib图表中的阴影感兴趣区域

Python matplotlib图表中的阴影感兴趣区域,python,numpy,matplotlib,Python,Numpy,Matplotlib,给定一个类似于 import matplotlib import matplotlib.pyplot as plt import numpy as np t = np.arange(0.0, 2.0, 0.01) s = 1 + np.sin(2 * np.pi * t) fig, ax = plt.subplots() ax.plot(s) ax.set(xlabel='time (s)', ylabel='voltage (mV)', title='sine') ax.grid() plt.

给定一个类似于

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = plt.subplots()
ax.plot(s)
ax.set(xlabel='time (s)', ylabel='voltage (mV)', title='sine')
ax.grid()
plt.show()
如果绘图的y值在(例如)1.25和0.75之间,如何自动对图表的垂直切片(从下到上)进行着色

正弦在这里只是一个示例,图的实际值不太规则


我已经看到了,这看起来与这个问题相似,但答案在固定的x值之间有一个区域。我希望阴影区域由y值确定。

您可以使用
ax.axvspan
,这显然完全符合您的要求。为了获得更好的结果,usa将
alpha
值设置为低于0.5,并可选择设置颜色和边缘颜色/宽度

fig, ax = plt.subplots() ax.plot(s) ax.set(xlabel='time (s)', ylabel='voltage (mV)', title='sine') ax.axvspan(0.75, 1.25, alpha=0.2) ax.grid() plt.show() 图,ax=plt.子批次() 斧头图 ax.set(xlabel='time(s)',ylabel='voltage(mV)',title='sine') ax.axvspan(0.75,1.25,alpha=0.2) ax.grid() plt.show() 如果您想使着色处于不同的方向(水平而不是垂直),还可以使用
ax.axhspan
方法。

这是一种非常灵活的方法(请参阅链接文档)

对于您的具体情况,如果我理解正确,这就足够了:

fig, ax = plt.subplots()
ax.plot(s)
ax.set(xlabel='time (s)', ylabel='voltage (mV)', title='sine')
ax.fill_between(range(len(s)), min(s), max(s), where=(s < 1.25) & (s > 0.75), alpha=0.5)
ax.grid()
fig,ax=plt.subplot()
斧头图
ax.set(xlabel='time(s)',ylabel='voltage(mV)',title='sine')
最大填充量介于(长度)、最小值、最大值之间,其中=(s<1.25)和(s>0.75),α=0.5
ax.grid()

我尝试过这个方法,虽然没有错误,但我也没有看到任何阴影区域。我想这是因为在当前的绘图序列中,没有数据。但是您可以显式地设置
ylim
,即使您不绘制任何数据。在您当前的情况下,此评论有意义吗?我需要阴影区域取决于绘图的值。我正在查看垂直条的阴影,尽管函数位于这些值之间。请参阅我的编辑,我认为这就是您想要的?是的!我不知道为什么我不能把这个标记为答案,它显然是。现在标记为答案该死,你是对的。我很抱歉这样滥用你的时间和专业知识。该文件中缺少数据,这对我们来说可能是一个重大问题-很高兴我现在就抓到了,而不是以后!啊,但是标记的重复区域在固定的x值之间着色。我希望着色区域由y值确定。