1
$\begingroup$

Consider the following file. It includes a list of tables defining some regions.

data = Import[FileNameJoin[{NotebookDirectory[], "data.m"}], "MX"];

This is what it looks like:

ListLogLogPlot[Evaluate[data], Joined -> True]

enter image description here

Is it possible to evaluate the region's boundary outside the domain covered by the colored curves (plus additionally 10^-3 < x < 75 && 10^-9<x<1)? It should look like as the domain in black:

enter image description here

$\endgroup$

1 Answer 1

1
$\begingroup$

enter image description here

Filter data sets 1 and 4 using HarmonicMeanFilter (or use your favorite filter) to get rid of the jumps:

harmonicMeanFilter = Transpose[
   {#, HarmonicMeanFilter[#2, 50]} & @@ Transpose[#]] &;

Plot filtered data sets 1 and 4 together with sets 2 and 5 with the option Filling -> Top:

lllp1425 = ListLogLogPlot[
   Join[harmonicMeanFilter /@ data[[{1, 4}]], data[[{2, 5}]]], 
   Joined -> True,  Filling -> Top];

Extract the polygons and take their union:

polygons1425 = BoundaryDiscretizeRegion[
  RegionUnion @@ Cases[Normal @ lllp1425, _Polygon, All]];

Do the same for data sets 3 and 6:

lllp36 = ListLogLogPlot[data[[{3, 6}]], Joined -> True];

polygons36 = BoundaryDiscretizeRegion[
   RegionUnion @@ Cases[lllp36, Line[x_] :> Polygon[x], All]];

Combine polygon1425 with polygon36 and get the boundary region:

bdr = BoundaryDiscretizeRegion @ RegionUnion[polygons1425, polygons36];

Finally to get the region of interest, take RegionDifference between the bounding rectangle of bdr and bdr:

bottomregion = RegionDifference[
  MapAt[{.99 #[[1]], 1.2 #[[2]]} &, BoundingRegion[bdr], {1}], bdr];

Show everything together:

Show[ListLogLogPlot[data, 
    Joined -> True, PlotLegends -> Range[6], ImageSize -> 700], 
 BoundaryDiscretizeRegion[bottomregion, BaseStyle -> Yellow]]

picture at the top

$\endgroup$
1
  • $\begingroup$ Thanks, this helped a lot! $\endgroup$ Commented Jun 1, 2023 at 18:13

Your Answer

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

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