Steps of generating the graph, not evident from the command, are: 1) Define upper limit (avoid spikes drawing): set `--upper-limit = AVERAGE(median)*1.5`; 2) From 1 до Х (ping count in Smokeping RRD) add: `DEF:pingX=/var/lib/smokeping/r1_lab_local.rrd:pingX:AVERAGE` 3) Round up `packet loss` - will later be compared to integer: CDEF:loss_rnd=loss,CEIL 4) For each packet loss level, from 1 to Y, create 2 variables, lossY_1 и lossY_2, drawn on even and odd intervals on the graph (to avoid vertical lines between 2 intervals with same packet loss level): CDEF:lossY=loss_rnd,Y,EQ,median,UNKN,IF CDEF:lossY_1=COUNT,2,%,0,EQ,lossY,UNKN,IF CDEF:lossY_2=COUNT,2,%,1,EQ,lossY,UNKN,IF as result we have lossY line which exists only when packet loss is at level Y (e.g. 1 of 20 packets) 5) For each pingX calculate smokeX by subtracting median from pingX: CDEF:smokeX=pingX,median,- 6) For each smokeX draw a 20% transparent black area above/below the transparent median: LINE2:median#E300FC00:"2/20" AREA:smokeX#00000020:"SmokeX":STACK 7) Draw median on top of the smoke, colored according to the packet loss level: LINE2:lossY_1#E300FC:"2/20" LINE2:lossY_2#E300FC:"2/20" colors can be defined with $config['smokeping']['color']['1']='E300FC' .. $config['smokeping']['color']['Y']='221100' That's it. Maybe, not optimal, but working. I'm always ready to answer any questions about this implementation.