Sample points within JamPolygon
JamPolygon
integer
number of points required
numeric
adjustment for the x/y ratio, numbers larger than
1 make the x-axis spacing larger than the y-axis spacing.
logical
(default FALSE
) when more then n
points are
defined than the target number of points, spread
indicates whether
the subset of n
points returned is defined using the first n
points (spread=FALSE) or an even spread from start to end (spread=TRUE),
spread=TRUE
can produce unusual distributions, with potential
improvementwhen filling an irregular polygon.
spread=FALSE
produces more "regular" placement of labels, also
without gaps.
numeric
ratio which must be 1
or higher, default 1,
how many total valid points should be defined before choosing
a subset of points to use.
n_ratio=1
- defines n
points as closely as possible.
n_ratio=2
- defines twice the points, then takes a subset
to use, based upon argument spread
. It may be beneficial when
trying to fill an irregularly shaped polygon to use a higher
n_ratio
, thereby forcing the discovery of many more possible
points. That said, the subset of points may not be "ideally"
distributed relative to other labels, and relative to the polygon
shape.
character
string indicating how to array the points:
"offset"
(default) uses a rectangular grid where alternating
points on each row are offset slightly on the y-axis.
"rectangle"
uses a rectangular grid with points on each row
that share the same y-axis value.
numeric
optional buffer used to adjust the jp
polygon
size overall, where negative values will slightly shrink the
polygon border. Points are sampled after this adjustment.
character
passed to jamba::mixedSortDF()
to determine
how to sort the resulting coordinates. Default byCols=c("-y", "x")
sorts top-to-bottom, then left-to-right.
character
string, default "split"
"split"
: newer approach that starts with large step increases in n
,
then subdivides between failure/success to find the optimal final n
.
During testing it was substantially faster and more accurate than
the previous algorithm "seq"
.
"seq"
: attempts a linear sequence of n
values with gradual
increases.
The approach is slow, testing values iteratively without regard
to the relative success, number of "points in polygon" compared to
the number requested. It also used a fixed "step size" which sometimes
produced more valid points than requested, and required using a subset
of points, see argument spread
.
logical
indicating whether to create a plot to illustrate
the process.
logical
indicating whether to print verbose output.
additional arguments are ignored.
This function arrays points across solid portions of polygons
provided in jp
.
Other JamPolygon:
JamPolygon-class
,
Venndir-class
,
[,JamPolygon,ANY,ANY,ANY-method
,
add_orientation_JamPolygon()
,
area_JamPolygon()
,
bbox_JamPolygon()
,
buffer_JamPolygon()
,
check_JamPolygon()
,
check_Venndir()
,
eulerr_to_JamPolygon()
,
farthest_point_JamPolygon()
,
find_venn_overlaps_JamPolygon()
,
has_point_in_JamPolygon()
,
intersect_JamPolygon()
,
label_fill_JamPolygon()
,
label_outside_JamPolygon()
,
label_segment_JamPolygon()
,
labelr_JamPolygon()
,
minus_JamPolygon()
,
nearest_point_JamPolygon()
,
nudge_JamPolygon()
,
plot.JamPolygon()
,
point_in_JamPolygon()
,
polyclip_to_JamPolygon()
,
polygon_circles()
,
polygon_ellipses()
,
split_JamPolygon()
,
union_JamPolygon()
,
update_JamPolygon()
df3 <- data.frame(name=c("polygon1", "polygon2"),
label=c("polygon1", "polygon2"),
x=I(list(
list(c(1, 6, 6, 1),
c(2, 5, 5, 2),
c(3, 4, 4, 3)),
list(#c(11, 16, 16, 11),
c(12, 15, 15, 12),
c(13, 14, 14, 13))
)),
y=I(list(
list(c(1, 1, 6, 6),
c(2, 2, 5, 5),
c(3, 3, 4, 4)),
list(#c(1, 1, 6, 6),
c(2, 2, 5, 5),
c(3, 3, 4, 4))
)),
fill=c("gold", "firebrick"))
jp3 <- new("JamPolygon", polygons=df3);
sample_JamPolygon(jp3[1,], n=40, do_plot=TRUE, algorithm="seq")
sample_JamPolygon(jp3[1,], n=40, do_plot=TRUE, algorithm="split")
sample_JamPolygon(jp3[1,], n=60, buffer=-0.3, spread=FALSE, do_plot=TRUE)
sample_JamPolygon(jp3[1,], n=60, buffer=-0.3, spread=FALSE, do_plot=TRUE, algorithm="split")
sample_JamPolygon(jp3[1,], n=60, buffer=-0.3, spread=FALSE, do_plot=TRUE, algorithm="seq")
sample_JamPolygon(jp3[1,], n=40, xyratio=1.5, do_plot=TRUE)
sample_JamPolygon(jp3[1,], n=40, xyratio=1/1.5, do_plot=TRUE)