2017-10-02 4 views
2

den folgenden Pandas Datenrahmen vor:Farbe füllt auf matplotlib Zeitreihendiagramm

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

Wenn auf einer Zeitreihe Diagramm dargestellt, wie die Fläche malen, wo state = high?

Etwas wie folgt aus:

enter image description here

Antwort

5

Da Sie eine Spanne für den Zeitraum mit nur einem 'high' Zustand darstellen möchten, müssen Sie einen künstlichen Puffer aufzubauen oben zu setzen und unter dem max und min jede Gruppe jeweils.

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) 

enter image description here

+0

Dank. Wie wäre es, wenn ich eine Spanne mit zwei verschiedenen Werten darstellen möchte: hoch, mittel? – DevEx

Verwandte Themen