2
$\begingroup$

I got two functions and want to plot them using different plotstyle so they can be shown distinctively after printing with black ink. I also need to fill the region between them and label the two regions. I prefer to use Dot or Hatched Filling but don't know how to do it. Here is my code:

ifun = Interpolation[{{14.800000000000011`, 
0.3001`}, {15.750000000000025`, 0.2501`}, {16.650000000000038`, 
0.2001`}, {17.60000000000005`, 0.1501`}, {19.300000000000075`, 
0.10010000000000001`}, {20.35000000000009`, 
0.1501`}, {20.700000000000095`, 0.2001`}, {20.9500000000001`, 
0.2501`}, {21.1000000000001`, 0.3001`}, {21.250000000000103`, 
0.35009999999999997`}, {21.350000000000104`, 
0.40009999999999996`}, {21.450000000000106`, 
0.45009999999999994`}, {21.550000000000107`, 
0.5001`}, {21.65000000000011`, 0.5501`}, {21.70000000000011`, 
0.6001000000000001`}, {21.75000000000011`, 
0.6501000000000001`}, {21.80000000000011`, 
0.7001000000000002`}, {21.900000000000112`, 
0.7501000000000002`}, {21.950000000000113`, 0.8001000000000003`}}]
f[x_] := 0.3001 /; 14 < x < 14.8
f[x_] := ifun[x] /; 14.8 < x < 21.95
f[x_] := 0.9001 /; 21.95 < x < 24.95
g[x_] := 0.9001 /; 14 < x < 21.95
Plot[{g[X], f[x]}, {x, 14, 24.95}, 
 Filling -> {1 -> {2}, 2 -> Axis}, PlotLabel -> Profit, 
 AxesLabel -> {"c", "Phi"}, 
 PlotLegends -> 
  SwatchLegend[{"TS", "ST"}, LegendLabel -> "Label", 
   LegendFunction -> (Framed[#, Background -> White] &)]]

Thank you very much!

$\endgroup$
6
  • 1
    $\begingroup$ Check the documentation for FillingStyle > Scope > Filling Style. You'll see that you can specify graphics directives in the filling specification, e.g. Filling -> {1 -> {{2}, Directive[Yellow]}, 2 -> {Axis, Directive[Green]}} (but, of course, with your own directives instead of Yellow and Green). Also see the PlotStyle option for changing the style of the plotted curves themselves! $\endgroup$
    – thorimur
    May 9, 2020 at 3:35
  • 1
    $\begingroup$ (Also, by the way, I think you've got a typo in your Plot function here: g[X]] should, it seems, be g[x]) $\endgroup$
    – thorimur
    May 9, 2020 at 3:35
  • 1
    $\begingroup$ Also check out Show, which lets you overlay graphics, and could let you overlay text graphics onto the region areas, perhaps. $\endgroup$
    – thorimur
    May 9, 2020 at 3:36
  • $\begingroup$ Also! Check out HatchFilling[...] and PatternFilling[...] to use in place of Directive[Yellow] and Directive[Green]! $\endgroup$
    – thorimur
    May 9, 2020 at 3:41
  • $\begingroup$ Dear thorimur, thank you very much for answering my questions. But I have tried what you have suggested, it seems they do not work. It is easy to get some colorful regions when using Mathematica. But I want to make my Graph easy to see when printed with black ink. $\endgroup$
    – lin zang
    May 10, 2020 at 3:06

1 Answer 1

2
$\begingroup$
 Plot[{g[x], f[x]}, {x, 14, 24.95}, 
  PlotTheme -> {"Monochrome", "ThickLines"},
  Filling -> {1 -> {{2}, HatchFilling[45 Degree]}, 
    2 -> {Axis, HatchFilling[-45 Degree]}}, 
  PlotLabel -> "Profit",
  AxesLabel -> {"c", "Phi"}, 
  PlotLegends -> SwatchLegend[{HatchFilling[45 Degree], HatchFilling[-45 Degree]}, 
     {"TS", "ST"}, LegendLabel -> "Label", 
     LegendFunction -> (Framed[#, Background -> White] &), 
     LegendMarkerSize -> 20]]

enter image description here

$\endgroup$
3
  • 1
    $\begingroup$ I'll just add on to this that in order to get dots, for example, one can use PatternFilling["HalftoneGrid",ImageScaled[1/20]]. PatternFilling also admits several other black and white patterns. $\endgroup$
    – thorimur
    May 11, 2020 at 20:58
  • $\begingroup$ Thank you so much! $\endgroup$
    – lin zang
    May 25, 2020 at 9:14
  • $\begingroup$ But I have tried many times, it did not work. It said "HatchFilling is not a Graphics primitive or directive". $\endgroup$
    – lin zang
    May 25, 2020 at 9:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.