12.1版本新加了个PatternFilling,刚好解决这类问题
pattern1 =
PatternFilling[{"Checkerboard", Lighter@Purple}, ImageScaled[1/50]];
pattern2 = PatternFilling[Rasterize[
Graphics[{Directive[Darker@Green, Opacity[0.5]],
Line[{{-.1, #}, {1.1, #}}] & /@ (.05 + Range[0, 1, .1])},
PlotRangePadding -> None, PlotRange -> {{0, 1}, {0, 1}}],
RasterSize -> 50, ImageSize -> 50
], ImageScaled[1/20]];
pattern3 = PatternFilling[Rasterize[
Graphics[{Directive[Lighter@Red, Thickness[.2]],
Line[{{-.1, 1.1 + #}, {1.1, -.1 + #}} & /@ {-1, 0, 1}]},
PlotRangePadding -> None, ImagePadding -> None,
PlotRange -> {{0, 1}, {0, 1}}],
RasterSize -> 50, ImageSize -> 50
], ImageScaled[1/50]];
pattern4 =
PatternFilling[
Graphics[{Directive[Hue[0.61`, 0.7`, 1],
Thickness[.4]], {Line[{{{-.1,
1.1 + #}, {1.1, -.1 + #}}, {{-.1, -.1 + #}, {1.1,
1.1 + #}}}] & /@ {-1, 0, 1}}}, PlotRangePadding -> None,
ImagePadding -> None, PlotRange -> {{0, 1}, {0, 1}}],
ImageScaled[1/80]];
Plot[{
Piecewise[{{2, x < 1}, {2 + 0.6 Log[x], x >= 1}}],
Piecewise[{{1, x < 1}, {1 + 0.5 Log[x],
1 <= x < 2}, {1 + 0.5 Log[x] + (x - 2)/10, x >= 2}}],
Piecewise[{{1, x < 1}, {1 + 0.5 Log[x], x >= 1}}]}, {x, 0, 3},
Filling -> {
1 -> {Top, pattern1},
1 -> {{2}, pattern2},
2 -> {{3}, pattern3},
3 -> {Bottom, pattern4}}, PlotRange -> {{0, 3}, {1, 3}},
ImageSize -> 600, GridLines -> None, Ticks -> None]

pattern1 =
PatternFilling[{"Checkerboard", Lighter@Purple}, ImageScaled[1/50]];
pattern2 = PatternFilling[Rasterize[
Graphics[{Directive[Darker@Green, Opacity[0.5]],
Line[{{-.1, #}, {1.1, #}}] & /@ (.05 + Range[0, 1, .1])},
PlotRangePadding -> None, PlotRange -> {{0, 1}, {0, 1}}],
RasterSize -> 50, ImageSize -> 50
], ImageScaled[1/20]];
pattern3 = PatternFilling[Rasterize[
Graphics[{Directive[Lighter@Red, Thickness[.2]],
Line[{{-.1, 1.1 + #}, {1.1, -.1 + #}} & /@ {-1, 0, 1}]},
PlotRangePadding -> None, ImagePadding -> None,
PlotRange -> {{0, 1}, {0, 1}}],
RasterSize -> 50, ImageSize -> 50
], ImageScaled[1/50]];
pattern4 =
PatternFilling[
Graphics[{Directive[Hue[0.61`, 0.7`, 1],
Thickness[.4]], {Line[{{{-.1,
1.1 + #}, {1.1, -.1 + #}}, {{-.1, -.1 + #}, {1.1,
1.1 + #}}}] & /@ {-1, 0, 1}}}, PlotRangePadding -> None,
ImagePadding -> None, PlotRange -> {{0, 1}, {0, 1}}],
ImageScaled[1/80]];
Plot[{
Piecewise[{{2, x < 1}, {2 + 0.6 Log[x], x >= 1}}],
Piecewise[{{1, x < 1}, {1 + 0.5 Log[x],
1 <= x < 2}, {1 + 0.5 Log[x] + (x - 2)/10, x >= 2}}],
Piecewise[{{1, x < 1}, {1 + 0.5 Log[x], x >= 1}}]}, {x, 0, 3},
Filling -> {
1 -> {Top, pattern1},
1 -> {{2}, pattern2},
2 -> {{3}, pattern3},
3 -> {Bottom, pattern4}}, PlotRange -> {{0, 3}, {1, 3}},
ImageSize -> 600, GridLines -> None, Ticks -> None]


