# Plot function on different intervals with different colors Show[Plot[Sin[x], {x, 0, π}, PlotStyle -> Red,
PlotRange -> {{0, 2 π}, {-1, 1}}],
Plot[Sin[x], {x, π, 2 π}, PlotStyle -> Green,
PlotRange -> {{0, 2 π}, {-1, 1}}]]


Is there a simpler way of doing this? Especially, one that does not require repeating the Plot command 2 times ;)

 Plot[Sin[x], {x, 0, 2 π}, PlotStyle -> Thick,
ColorFunction -> Function[{x, y}, If[x < Pi, Red, Blue]],
ColorFunctionScaling -> False,
PlotRange -> {{0, 2 π}, {-1, 1}}]


or

 Plot[Sin[x], {x, 0, 2 π}, PlotStyle -> Thick,
Mesh -> {{Pi}},
PlotRange -> {{0, 2 π}, {-1, 1}}]


or

 Plot[{ConditionalExpression[Sin[x], 0 <= x <= Pi],
ConditionalExpression[Sin[x], Pi <= x <= 2 Pi]}, {x, 0, 2 Pi},
PlotStyle -> {Directive[Thick, Red], Directive[Thick, Blue]}] • Thank you! And if I want to make the blue region dashed? I tried MeshShading -> {Red, {Blue, Dashed}} without any luck.. – Andrei Feb 4 '13 at 13:14
• you need to use Directive: MeshShading->{Red,Directive[Blue,Dashed]} – kglr Feb 4 '13 at 13:24

Not a simpler way：

plt = Plot[Sin[x], {x, 0, 2 \[Pi]}];
{d, opt} = {Cases[plt, Line[x_] -> x, Infinity][], plt[]};
{r, b} = GatherBy[d, #[] <= Pi &];
Graphics[{Thick, {Red, Line@r}, {Blue, Line@b}}, opt]
(*ListLinePlot[{r,b},PlotStyle->{{#,Red},{#,Blue}}&@Thick]*) 