Skip to content
Prev 363157 / 398502 Next

only plot borders of a region in a scatter plot

Hi Zun Yin,
A slight improvement follows, which tries to "inflate" the pixellation
locally. This, in addition to the offset, might do it for you.

pixel8<-function(x,y) {
 nsteps<-length(x)-1
 newx<-x[1]
 newy<-y[1]
 lastdx<-lastdy<-0
 for(i in 1:nsteps) {
  dx<-diff(x[i:(i+1)])
  dy<-diff(y[i:(i+1)])
  if(dx && dy) {
   if((dx+lastdx)/(dy+lastdy) < 0) {
    newx<-c(newx,x[i]+dx,x[i]+dx)
    newy<-c(newy,y[i],y[i]+dy)
   }
   else {
    newx<-c(newx,x[i],x[i]+dx)
    newy<-c(newy,y[i]+dy,y[i]+dy)
   }
  }
  else {
   newx<-c(newx,x[i+1])
   newy<-c(newy,y[i+1])
  }
  lastdx<-dx
  lastdy<-dy
 }
 return(list(x=newx,y=newy))
}

x<-c(5,4,4,3,2,2,1,1,2,2,3,4,5,5,6,6,7,8,8,9,8,7,7,6,6,5,5)
y<-c(1,2,2,3,4,4,5,6,6,7,8,8,9,8,8,7,7,6,6,5,5,4,3,3,2,2,1)
plot(1:9,type="n")
lines(x,y)
newxy<-pixel8(x,y)
lines(newxy$x,newxy$y,col="red")

Jim
On Fri, Aug 5, 2016 at 11:40 AM, Jim Lemon <drjimlemon at gmail.com> wrote: