NoOverlap | R Documentation |
Shift Symbols such that there is no overlap
NoOverlap(x, y, focsiz, SEL = 0, OLDx = 0, OLDy = 0, cenx = 0, ceny = 0)
x |
x-location |
y |
y-location |
focsiz |
symbol size |
SEL |
selection of which symbols to shift |
OLDx |
x-locations of origin |
OLDy |
y-locations of origin |
cenx |
center x |
ceny |
center y |
Program is used for finding positions for exploding. A vector is dcalculated from each origin to each point and explosions are projected along these directions until a position is found that does not overlap. The position is nudged by a value of focsiz at each step. If OLDx and OLDy are not provided, cenx and ceny are used as origin points.
x,y list of new positions
Jonathan M. Lees<jonathan.lees@unc.edu>
ExplodeSymbols
draw.circ<-function (x, y, r, ...)
{
CI = RPMG::circle(1)
for (i in 1:length(x)) {
Cx = x[i] + r * CI$x
Cy = y[i] + r * CI$y
lines(c(Cx, Cx[1]), c(Cy, Cy[1]), type = "l", ...)
}
}
x = rnorm(20)
y = rnorm(20)
rx = range(x)
ry = range(y)
drx = diff(rx)
dry = diff(ry)
XPCT=.2
rx = c(rx[1]-XPCT*drx, rx[2]+XPCT*drx)
ry = c(ry[1]-XPCT*dry, ry[2]+XPCT*dry)
plot(rx , ry , type='n', asp=1, xlab="km", ylab="km")
u = par("usr")
focsiz = 0.04* (u[2]-u[1])
draw.circ(x, y, focsiz, col='red')
NXY = NoOverlap(x,y,focsiz)
plot(rx , ry , type='n', asp=1, xlab="km", ylab="km")
u = par("usr")
focsiz = 0.04* (u[2]-u[1])
draw.circ(NXY$x, NXY$y, focsiz, col="blue" )
segments(x,y,NXY$x, NXY$y)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.