Why does plot not show where Piecewise function is not zero?

Try

Plot[f[x], {x, 0, 1.0001}, PlotPoints -> {Automatic, { 1}}]

enter image description here

Don't know why this workaround only works for extended plotrange.


You can use ParametricPlot to show the jumps at the boundaries of the domain without having to extend the domain.

If jumps occur only at the boundaries using ParametricPlot solves the issue:

ClearAll[f1, f2]
f1[x_?NumericQ] := Piecewise[{{.8, x == 0}, {1, x == 1}, {1/2, True}}]
ParametricPlot[{x, f1[x]}, {x, 0, 1}, 
 PlotRange -> {{-.5, 1}, {0, 1}}, AxesOrigin -> {-.5, 0}]

enter image description here

If there are jumps in the interior of the domain we need Ulrich's method using PlotPoints to force ParametricPlot to sample the specified points:

f2[x_?NumericQ] := 
 Piecewise[{{.8, x == 0}, {1, x == 1}, {.2, x == .8}, {1/2, True}}]
ParametricPlot[{x, f2[x]}, {x, 0, 1}, 
 PlotRange -> {{-.5, 1}, {0, 1}}, AxesOrigin -> {-.5, 0}]

same picture as above

With ParametricPlot, you don't have to include the boundaries in the list of jumps, that is, you can use PlotPoints -> {Automatic, {.8}} instead of PlotPoints -> {Automatic, {0,.8,1}}:

ParametricPlot[{x, f2[x]}, {x, 0, 1}, 
 PlotPoints -> {Automatic, {.8}}, 
 PlotRange -> {{-.5, 1}, {0, 1}}, AxesOrigin -> {-.5, 0}]

enter image description here