# Shading on ListCurvePathPlot

I have a series of data points describing the boundary of some region. Using ListCurvePathPlot, I have an easy way to get a nice curve interpolating this boundary (rather than splitting the boundary up into "upper" and "lower" curves and using regular function interpolation, which looks much worse). An example is given in the plot below.

My question is: is there an easy way to get the interior region bounded by this to be filled in?

The curve isn't closed but we can easily close off the right hand side.

Here is the Plot function analogue of what I want to have for my curve

Plot[{0.5 + x^(1/3), 0.5 - x^(1/3)}, {x, 0, 1},
Filling -> {1 -> {2}}, PlotStyle -> Red]


Edit: If you want to recreate the first figure as a minimal working example, the points I used are:

points = {{0.557, 0.999072}, {0.7, 0.985086}, {0.69, 0.986477},
{0.6,0.987449}, {0.59, 0.987258}, {0.58, 0.987789},
{0.68, 0.987633}, {0.67, 0.988555}, {0.66, 0.989164},
{0.65, 0.989422}, {0.64, 0.989367}, {0.57, 0.98998},
{0.56, 0.995297}, {0.63, 0.989039}, {0.62, 0.988555},
{0.61, 0.987953}, {0.557, 1.0037}, {0.6, 1.01934},
{0.59, 1.01729}, {0.58, 1.01505}, {0.7, 1.06133},
{0.69, 1.0558}, {0.65, 1.034}, {0.64, 1.02983},
{0.63, 1.02643}, {0.62, 1.0237}, {0.61, 1.02138},
{0.68, 1.05046}, {0.67, 1.04468}, {0.66, 1.03896},
{0.57, 1.01214}, {0.56, 1.00701}};


and the code is simply:

Show[
ListPlot[{points}, PlotStyle -> Red],
ListCurvePathPlot[points, PlotStyle -> {Red, Thick}]]

• Please, post the code of your problem or, at least, a MWE (minimal working example)... – José Antonio Díaz Navas Mar 11 '18 at 19:44
• Posting the list of your points would be worth considering... – gwr Mar 11 '18 at 22:08
• Updated to reflect these suggestions. Thanks. – Alex Atanasov Mar 11 '18 at 22:40

## 3 Answers

pts = Table[{2 t^2, t}, {t, -1, 1, 0.05}];

path = FindCurvePath[pts][[1]];


Using Graphics

Graphics[{Red, Thick, Line[pts[[path]]], LightRed, Polygon[pts[[path]]]},
Axes -> True]


ListCurvePathPlot[pts,
PlotStyle -> {{Red, Thick}},
Epilog -> {Opacity[.5, LightRed], Polygon[pts[[path]]]}]


• Yes, this looks like exactly what I was looking for. Thanks! – Alex Atanasov Mar 11 '18 at 22:50

Does this help?

pts = Table[{2 t^2, t}, {t, -1, 1, 0.05}];
Graphics[
{
EdgeForm[], FaceForm[{Darker@Red, Opacity[0.25]}],
Polygon[pts],
Thick, Darker@Red,
Line[pts],
PointSize[0.02],
Point[pts]
},
Axes -> True
]


• This is also helpful. It makes sense that the polygon function would be effective, if the spacing is sufficiently small. I wasn't aware of this function. Thanks! – Alex Atanasov Mar 11 '18 at 22:50

You can use a function as the PlotStyle option setting to add Points and a Polygon:

ListCurvePathPlot[points, PlotStyle ->
({Red, Thickness[.01], PointSize[Large], #, Yellow, Polygon @@ #, Blue, Point @@ # } &)]


$Version  "11.3.0 for Linux x86 (64-bit) (March 7, 2018)" Also works in $Version


"9.0 for Microsoft Windows (64-bit) (January 25, 2013)"

Using the example in Henrik's and Bob's anwers:

pts = Table[{2 t^2, t}, {t, -1, 1, 0.05}];
ListCurvePathPlot[pts, PlotStyle ->
({Red, Thickness[.01], PointSize[Large], #, LightRed, Polygon @@ #, Blue, Point @@ #} &)]


And the first example from ListCurvePathPlot :

pts2 = Table[{Cos[t], Sin[t]}, {t, RandomReal[{0, 2 Pi}, 50]}];
ListCurvePathPlot[pts2, PlotStyle ->
({Red, Thickness[.01], PointSize[Large], #, LightRed, Polygon @@ #, Blue, Point @@ #} &)]