Plot the convex hull of a set of points in 2D.
plotHull2D(
pts,
drawPoints = FALSE,
drawLines = TRUE,
drawPolygons = TRUE,
addText = FALSE,
addRays = FALSE,
direction = 1,
drawPlot = TRUE,
drawBBoxHull = FALSE,
m = apply(pts, 2, min) - 5,
M = apply(pts, 2, max) + 5,
...
)
The ggplot
object if drawPlot = TRUE
; otherwise, a list of ggplot
components.
A matrix with a point in each row.
Draw the points.
Draw lines of the facets.
Fill the hull.
Add text to the points. Currently coord
(coordinates), rownames
(rownames)
and both
supported or a vector with text.
Add the ray defined by direction
.
Ray direction. If i'th entry is positive, consider the i'th column of pts
plus a value greater than on equal zero (minimize objective $i$). If negative, consider the
i'th column of pts
minus a value greater than on equal zero (maximize objective $i$).
Draw the ggplot
. Set to FALSE if you want to combine hulls in a single plot.
If addRays
then draw the hull areas hitting the bounding box also.
Minimum values of the bounding box.
Maximum values of the bounding box.
Further arguments passed on the the ggplot
plotting functions. This must be done as
lists. Currently the following arguments are supported:
argsGeom_point
: A list of arguments for ggplot2::geom_point
.
argsGeom_path
: A list of arguments for ggplot2::geom_path
.
argsGeom_polygon
: A list of arguments for ggplot2::geom_polygon
.
argsGeom_label
: A list of arguments for ggplot2::geom_label
.
library(ggplot2)
pts<-matrix(c(1,1), ncol = 2, byrow = TRUE)
plotHull2D(pts)
pts1<-matrix(c(2,2, 3,3), ncol = 2, byrow = TRUE)
plotHull2D(pts1, drawPoints = TRUE)
plotHull2D(pts1, drawPoints = TRUE, addRays = TRUE, addText = "coord")
plotHull2D(pts1, drawPoints = TRUE, addRays = TRUE, addText = "coord", drawBBoxHull = TRUE)
plotHull2D(pts1, drawPoints = TRUE, addRays = TRUE, direction = -1, addText = "coord")
pts2<-matrix(c(1,1, 2,2, 0,1), ncol = 2, byrow = TRUE)
plotHull2D(pts2, drawPoints = TRUE, addText = "coord")
plotHull2D(pts2, drawPoints = TRUE, addRays = TRUE, addText = "coord")
plotHull2D(pts2, drawPoints = TRUE, addRays = TRUE, direction = -1, addText = "coord")
## Combine hulls
ggplot() +
plotHull2D(pts2, drawPoints = TRUE, addText = "coord", drawPlot = FALSE) +
plotHull2D(pts1, drawPoints = TRUE, drawPlot = FALSE) +
gMOIPTheme() +
xlab(expression(x[1])) +
ylab(expression(x[2]))
# Plotting an LP
A <- matrix(c(-3,2,2,4,9,10), ncol = 2, byrow = TRUE)
b <- c(3,27,90)
obj <- c(7.75, 10)
pts3 <- cornerPoints(A, b)
plotHull2D(pts3, drawPoints = TRUE, addText = "coord", argsGeom_polygon = list(fill = "red"))
Run the code above in your browser using DataLab