Spread Out a Vector of Numbers To a Minimum Interval
Spread the numbers of a vector so that there is a minimum interval between any two numbers (in ascending or descending order). This is helpful when we want to place textboxes on a plot and ensure, that they do not mutually overlap.
SpreadOut(x, mindist = NULL, cex = 1.0)
x |
a numeric vector which may contain |
mindist |
the minimum interval between any two values. If this is left to |
cex |
numeric character expansion factor; multiplied by |
SpreadOut()
starts at or near the middle of the vector and increases the
intervals between the ordered values. NA
s are preserved. SpreadOut()
first tries to spread groups of values with intervals less than mindist
out neatly away from the mean of the group. If this doesn't entirely succeed,
a second pass that forces values away from the middle is performed.
SpreadOut()
can also be used to avoid overplotting of axis tick labels
where they may be close together.
On success, the spread out values. If there are less than two valid values, the original vector is returned.
This function is based on plotrix::spreadout()
and has been
integrated here with some minor changes.
Jim Lemon <jim@bitwrit.com.au>
some extensions Andri Signorell <andri@signorell.net>
SpreadOut(c(1, 3, 3, 3, 3, 5), 0.2) SpreadOut(c(1, 2.5, 2.5, 3.5, 3.5, 5), 0.2) SpreadOut(c(5, 2.5, 2.5, NA, 3.5, 1, 3.5, NA), 0.2) # this will almost always invoke the brute force second pass SpreadOut(rnorm(10), 0.5)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.