only plot borders of a region in a scatter plot
Hi Zun Yin,
The first problem requires something like this:
pixel8<-function(x,y,pixsize=1) {
nsteps<-length(x)-1
newx<-x[1]
newy<-y[1]
for(i in 1:nsteps) {
dx<-diff(x[i:(i+1)])
dy<-diff(y[i:(i+1)])
if(dx && dy) {
newx<-c(newx,x[i]+dx,x[i]+dx)
newy<-c(newy,y[i],y[i]+dy)
}
else {
newx<-c(newx,x[i+1])
newy<-c(newy,y[i+1])
}
}
return(list(x=newx,y=newy))
}
I think that this does part of what you want. Your points seem to be
in the middle of a pixel edge, so an offset would have to be added to
align the resulting points with the corners. The other thing to work
out is the order of changing x and y on a slope, which I think is a
function of whether the line is "inside" or "outside" the overall area
enclosed. I'll post again if I have any brilliant ideas.
Jim
On Fri, Aug 5, 2016 at 6:08 AM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
On 04/08/2016 11:46 AM, Zun Yin wrote:
Dear William, Duncan and Bert, Thanks a lot for your help and tips :D In fact the contour() plot still cannot solve my problem perfectly. As the resolution of my plot is very coarse, I want to a contour perfectly surround all grid cells in the river basin. In another word, I want all angle of the contour to be 90 degree. Another problem for the contour() is that the contour line doesn't close at where the value of neighbouring grid cell is NA. See the right side of the two contour lines (attachment). Do you know how I can get what I want? Thanks a lot :P
The second problem is easy: just change your NA values to some new ID value, or change the test from basiinID == ID to !is.na(basiinID) & basiinID == ID The first one looks harder. Duncan Murdoch
Cheers, Zun Yin On Thu, Aug 4, 2016 at 5:09 PM, Bert Gunter <bgunter.4567 at gmail.com> wrote:
... note the typo. It's: contour( basiinID == ID, level=0.5) :-) -- Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Thu, Aug 4, 2016 at 8:03 AM, William Dunlap via R-help <r-help at r-project.org> wrote:
If 'basinID' is the matrix of basin identifiers you could draw an outline of the basin with identifier 'ID' with coutour( basiinID == ID, level=0.5) Add 'add=TRUE' if you are overlaying this on an existing plot. Bill Dunlap TIBCO Software wdunlap tibco.com On Thu, Aug 4, 2016 at 1:51 AM, Zun Yin <yinzun2000 at gmail.com> wrote:
D ear all, I have a matrix with ID of river basins (integer numbers). Now I want to highlight one river basin in a map by plotting only the border. Like the attached figure. Two river basins are highlighted by polygons. It is created by ferret, but I prefer to implement it by R. Anybody know how
to
do it? Thanks a lot. Cheers, Zun Yin
______________________________________________ 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.
[[alternative HTML version deleted]]
______________________________________________ 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.
______________________________________________ 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.