# How to define the boundary of the 2D region outside of the list of sub-regions?

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]


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:

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

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