[R] Creating "Envelope" around a plot

Duncan Murdoch murdoch.duncan at gmail.com
Mon Nov 2 16:03:39 CET 2015


On 02/11/2015 7:33 AM, WRAY NICHOLAS wrote:
> Hi  I am plotting various strands of information, and I want to create an
> "envelope" around each line, so that the locus of the envelope is the boundary
> points no more than a fixed maximum distance from the plotted line, a bit like
> drawing a larger rectangle with paralle sides and curved compass corners around
> a smaller rectangle.  Obviously I can work out how to do this in code
> (eventually) but I suspect it would take me a while and i was wondering whether
> there was some R function which I don't know about which creates sets of of
> points at a given maximal distance
>
> the lines are simple vectors, ie like this noddy example
>
> veca<-c(4,3,6,5,7,3,2,3,3,6,8,7)
> plot(veca,type="l",lwd=2)
>
> then I want to plot the locus of the boundary of all points no more than (say) 1
> unit from the line  I imagine that one would have to provide a larger set of
> interpolated points between the actual points of veca, but I can do that no
> problem
>
> I'd be grateful if anyone out there in the R-ethervoid has any ideas

The graphics system will do this for you automatically if your 
coordinate system has the same scale in x and y, and you use a really 
huge line width.  For example,

veca<-c(4,3,6,5,7,3,2,3,3,6,8,7)plot(veca, lwd=150, col="gray", type="l")lines(veca, lwd=2)


If you want to be 1 unit away in user coordinates and the x and y scales 
are different, it will be a lot harder.

Duncan Murdoch



More information about the R-help mailing list