[R] Fit a smooth closed shape through 4 points

S Ellison S.Ellison at LGCGroup.com
Mon Mar 21 15:51:52 CET 2016


Is there a reason not to use the convex hull for area calculations? Any curve you put through the points would surely be at least as arbitrary as a straight line.

S Ellison

> -----Original Message-----
> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Alexander
> Shenkin
> Sent: 21 March 2016 14:04
> To: r-help
> Subject: Re: [R] Fit a smooth closed shape through 4 points
> 
> Thanks for your reply, Charles.  spline() doesn't seem to fit a closed shape;
> rather, it's producing a parabola.  Perhaps I'm missing an argument I should
> include?
> 
> grid.xspline() seems to get close to what I need, but it returns a grob object -
> not sure how to work with those as shapes per se.
> 
> My goal is to produce a 2D shape from which I can calculate area, average
> widths, and other such things.  The context is that we have measured tree
> crowns in a manner that has produced 4 points such as these from two offset
> axes.  We want to use the resulting shapes for our calculations.
> 
> (incidentally, my original points were off - here are the correct ones)
> 
> shapepoints = structure(list(x = c(8.9, 0, -7.7, 0, 8.9), y = c(0, 2, 0, -3.8, 0)),
> .Names = c("x", "y"), row.names = c(NA, -5L), class = "data.frame")
> 
> plot(spline(shapepoints))
> 
> Thanks,
> Allie
> 
> On 3/21/2016 1:10 PM, Charles Determan wrote:
> > Hi Allie,
> >
> > What is you goal here?  Do you just want to plot a curve to the data?
> > Do you want a function to approximate the data?
> >
> > You may find the functions spline() and splinefun() useful.
> >
> > Quick point though, with so few points you are only going to get a
> > very rough approximation no matter the method used.
> >
> > Regards,
> > Charles
> >
> >
> > On Mon, Mar 21, 2016 at 7:59 AM, Alexander Shenkin <ashenkin at ufl.edu
> > <mailto:ashenkin at ufl.edu>> wrote:
> >
> >     Hello all,
> >
> >     I have sets of 4 x/y points through which I would like to fit
> >     closed, smoothed shapes that go through those 4 points exactly.
> >     smooth.spline doesn't like my data, since there are only 3 unique x
> >     points, and even then, i'm not sure smooth.spline likes making
> >     closed shapes.
> >
> >     Might anyone else have suggestions for fitting algorithms I could
> >     employ?
> >
> >     Thanks,
> >     Allie
> >
> >
> >     shapepoints = structure(c(8.9, 0, -7.7, 0, 0, 2, 0, 3.8), .Dim = c(4L,
> >     2L), .Dimnames = list(NULL, c("x", "y")))
> >
> >     smooth.spline(shapepoints)
> >
> >     # repeat the first point to close the shape
> >     shapepoints = rbind(shapepoints, shapepoints[1,])
> >
> >     smooth.spline(shapepoints)
> >
> >     ______________________________________________
> >     R-help at r-project.org <mailto:R-help at r-project.org> mailing list --
> >     To UNSUBSCRIBE and more, see
> >     https://stat.ethz.ch/mailman/listinfo/r-help
> >     PLEASE do read the posting guide
> >     http://www.R-project.org/posting-guide.html
> >     and provide commented, minimal, self-contained, reproducible code.
> >
> >
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.


*******************************************************************
This email and any attachments are confidential. Any use...{{dropped:8}}



More information about the R-help mailing list