Python matplotlib时间序列图上的彩色填充

Python matplotlib时间序列图上的彩色填充,python,pandas,matplotlib,Python,Pandas,Matplotlib,考虑以下数据帧: time val server state 2015-01-01 00:00:00 10 server01 normal 2015-01-01 00:02:00 18 server01 high 2015-01-01 00:03:00 41 server01 high 2015-01-01 00:04:00 22 server01 high 2015-01-01 01:05:00 32 server01 normal 2015-01

考虑以下数据帧:

time                val server   state
2015-01-01 00:00:00 10   server01 normal
2015-01-01 00:02:00 18  server01 high
2015-01-01 00:03:00 41  server01 high
2015-01-01 00:04:00 22  server01 high
2015-01-01 01:05:00 32  server01 normal
2015-01-01 01:06:00 10  server01 high   
2015-01-01 01:07:00 42  server01 normal
2015-01-01 01:08:00 24  server01 normal
...........
在时间序列图上绘制时,如何绘制状态=高的区域

大概是这样的:


由于您只想在一个
'high'
状态下绘制时段跨度,因此需要建立一个人工缓冲区,分别设置在每组最大值和最小值的上方和下方

p = pd.Timedelta(30, unit='s')

df.val.plot()
for (state, _), g in df.groupby(['state', df.state.ne('high').cumsum()]):
    if  state == 'high':
        start = g.index.min() - p
        end = g.index.max() + p
        plt.axvspan(start, end, color='r', alpha=0.2)

谢谢。如果我想用两个不同的值来绘制一个跨度,比如说高,中?