【问题标题】:Colour fill on matplotlib time series chartmatplotlib时间序列图表上的颜色填充
【发布时间】:2017-10-03 00:11:33
【问题描述】:

考虑以下 pandas 数据框:

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
...........

在时间序列图上绘制时,如何绘制state = high所在的区域?

类似这样的:

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    由于您要绘制只有一个'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)
    

    【讨论】:

    • 谢谢。如果我想绘制一个具有 2 个不同值的跨度怎么办:高、中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2015-01-30
    • 1970-01-01
    相关资源
    最近更新 更多