If the same threshold applies to all plots, then a convenient way is to use the options `Mesh`, `MeshShading` and `GridLines`: With[{a = 3, b = 3, time1 = 30}, Plot[a*Sqrt[x] - b*Cos[x], {x, 0, time1}, Mesh -> {{15}}, PlotStyle -> Red, MeshShading -> {Opacity[1], Opacity[.5]}, GridLines -> {{15}, None}, GridLinesStyle -> Directive[Gray, Dashed]]] [![enter image description here][1]][1] You can add the options `Mesh` and `MeshShading` to `p1`, `p2` and `p3`: DynamicModule[{a1 = 1, a2 = 2, a = 3, b1 = 1, b2 = 2, b = 3, lag1 = 26, lag = 30, time1 = 40, time2 = 36, time3 = 39}, p1 = Plot[a Sqrt[x] - b Cos[x], {x, 0, time1}, Mesh -> {{15}}, MeshShading -> {Opacity[1], Opacity[0.3]}]; p2 = Plot[a1 Sqrt[x] - b1 Cos[x], {x, time1 - lag, time2}, PlotStyle -> Red, Mesh -> {{15}}, MeshShading -> {Opacity[1], Opacity[0.3]}]; p3 = Plot[a2 Sqrt[x] - b2 Cos[x], {x, time2 - lag1, time3}, PlotStyle -> Green, Mesh -> {{15}}, MeshShading -> {Opacity[1], Opacity[0.3]}]; Show[p1, p2, p3, GridLines -> {{15}, None}, GridLinesStyle -> Directive[Gray, Dashed], PlotRange -> All]] [![enter image description here][2]][2] Note: You might want top play with `ConditionalExpression` and `Piecewise` to get all three plots using a single `Plot`. [1]: https://i.sstatic.net/dFLz8.png [2]: https://i.sstatic.net/sVBlo.png