3-D arrows, segments, polygons, boxes, rectangles | R Documentation |
Functions arrows3D
and segments3D
draw arrows and line segments
between pairs of points.
Functions box3D
and border3D
draw boxes between pairs of points.
polygon3D
draws polygons; rect3D
draws rectangles.
The 2D functions arrows2D
, segments2D
, rect2D
and polygon2D
are included
for their side effect of having a color key.
arrows3D (x0, y0, z0, x1 = x0, y1 = y0, z1 = z0, ...,
colvar = NULL, phi = 40, theta = 40,
col = NULL, NAcol = "white", breaks = NULL,
colkey = NULL, panel.first = NULL,
clim = NULL, clab = NULL, bty = "b", type = "triangle",
add = FALSE, plot = TRUE)
segments3D (x0, y0, z0, x1 = x0, y1 = y0, z1 = z0, ...,
colvar = NULL, phi = 40, theta = 40,
col = NULL, NAcol = "white", breaks = NULL,
colkey = NULL, panel.first = NULL,
clim = NULL, clab = NULL, bty = "b",
add = FALSE, plot = TRUE)
box3D (x0, y0, z0, x1, y1, z1, ...,
colvar = NULL, phi = 40, theta = 40,
col = NULL, NAcol = "white", breaks = NULL,
border = NA, facets = TRUE, colkey = NULL,
panel.first = NULL, clim = NULL, clab = NULL, bty = "b",
add = FALSE, plot = TRUE)
border3D(x0, y0, z0, x1, y1, z1, ...,
colvar = NULL, phi = 40, theta = 40,
col = NULL, NAcol = "white", breaks = NULL,
colkey = NULL, panel.first = NULL,
clim = NULL, clab = NULL, bty = "b",
add = FALSE, plot = TRUE)
rect3D (x0, y0, z0, x1 = NULL, y1 = NULL, z1 = NULL, ...,
colvar = NULL, phi = 40, theta = 40,
col = NULL, NAcol = "white", breaks = NULL,
border = NA, facets = TRUE, colkey = NULL,
panel.first = NULL, clim = NULL, clab = NULL, bty = "b",
add = FALSE, plot = TRUE)
polygon3D (x, y, z, ...,
colvar = NULL, phi = 40, theta = 40,
col = NULL, NAcol = "white", breaks = NULL,
border = NA, facets = TRUE, colkey = NULL,
panel.first = NULL, clim = NULL, clab = NULL, bty = "b",
add = FALSE, plot = TRUE)
arrows2D (x0, y0, x1 = x0, y1 = y0, ..., colvar = NULL,
col = NULL, NAcol = "white", breaks = NULL,
colkey = NULL, clim = NULL, clab = NULL,
type = "triangle", add = FALSE, plot = TRUE)
segments2D (x0, y0, x1 = x0, y1 = y0, ..., colvar = NULL,
col = NULL, NAcol = "white", breaks = NULL,
colkey = NULL, clim = NULL, clab = NULL,
add = FALSE, plot = TRUE)
rect2D (x0, y0, x1 = x0, y1 = y0, ..., colvar = NULL,
col = NULL, NAcol = "white", breaks = NULL,
colkey = NULL, clim = NULL, clab = NULL,
add = FALSE, plot = TRUE)
polygon2D (x, y, ..., colvar = NULL,
col = NULL, NAcol = "white", breaks = NULL,
border = NA, facets = TRUE,
colkey = NULL, clim = NULL, clab = NULL,
add = FALSE, plot = TRUE)
x0 , y0 , z0 |
coordinates of points from which to draw. |
x1 , y1 , z1 |
coordinates of points to which to draw.
For |
x , y , z |
coordinates of the vertices of the polygon.
The polygon will be closed by joining the last point to the first point.
The coordinates can contain missing values ( |
colvar |
The variable used for coloring. It need
not be present, but if specified, it should be a vector of
dimension equal to the coordinates or to the number of polygons.
Values of |
theta , phi |
the angles defining the viewing direction.
|
col |
Color palette to be used for coloring the arrows or segments
as specified by the |
NAcol |
Colors to be used for |
breaks |
a set of finite numeric breakpoints for the colors; must have one more breakpoint than color and be in increasing order. Unsorted vectors will be sorted, with a warning. |
colkey |
A logical, The default is to draw the color key on side = 4, i.e. in the right margin.
If |
border |
The color of the lines drawn around the surface facets.
The default, |
facets |
If |
panel.first |
A |
clab |
Only if |
clim |
Only if |
bty |
The type of the perspective box, the default draws only the back panels.
Only effective if the persp
argument ( |
type |
The type of the arrow head, one of |
add |
Logical. If |
plot |
Logical. If |
... |
additional arguments passed to the plotting methods. The following persp arguments can be specified:
In addition, the perspbox arguments
For For For all the functions, arguments The arguments after ... must be matched exactly. |
Returns the viewing transformation matrix.
See trans3D.
arrows for the 2-D arrows function on which arrows3D
is based.
segments for the 2-D arrows function on which segments3D
is based.
# save plotting parameters
pm <- par("mfrow")
## ========================================================================
## arrows, points, segments, box
## ========================================================================
# Create a grid of x, y, and z values
xx <- yy <- seq(-0.8, 0.8, by = 0.2)
zz <- seq(-0.8, 0.8, by = 0.8)
M <- mesh(xx, yy, zz)
x0 <- M$x; y0 <- M$y; z0 <- M$z
x1 <- x0 + 0.1
Col <- c("red", "blue", "green")
arrows3D(x0, y0, z0, x1 = x1, colvar = z0, lwd = 2,
d = 2, clab = "z-value", col = Col, length = 0.1,
xlim = c(-0.8, 0.8), ylim = c(-0.8, 0.8),
main = "arrows3D, points3D, segments3D, border3D")
# add starting point of arrows
points3D(x0, y0, z0, add = TRUE, colvar = z0,
colkey = FALSE, pch = ".", cex = 3, col = Col)
# use segments to add section
x0 <- c(-0.8, 0.8, 0.8, -0.8)
x1 <- c( 0.8, 0.8, -0.8, -0.8)
y0 <- c(-0.8, -0.8, 0.8, -0.8)
y1 <- c(-0.8, 0.8, 0.8, 0.8)
z0 <- c(0., 0., 0., 0.)
segments3D(x0, y0, z0, x1, y1, z1 = z0,
add = TRUE, col = "black", lwd = 2)
# add a box
border3D(-0.8, -0.8, -0.8, 0.8, 0.8, 0.8,
col = "orange", add = TRUE, lwd = 3)
## ========================================================================
## boxes, cubes
## ========================================================================
# borders are boxes without facets
border3D(x0 = seq(-0.8, -0.1, by = 0.1),
y0 = seq(-0.8, -0.1, by = 0.1),
z0 = seq(-0.8, -0.1, by = 0.1),
x1 = seq(0.8, 0.1, by = -0.1),
y1 = seq(0.8, 0.1, by = -0.1),
z1 = seq(0.8, 0.1, by = -0.1),
col = gg.col(8), lty = 2,
lwd = c(1, 4), phi = 20, main = "border3D")
box3D(x0 = -0.8, y0 = -0.8, z0 = -0.8,
x1 = 0.8, y1 = 0.8, z1 = 0.8,
border = "black", lwd = 2,
col = gg.col(1, alpha = 0.8),
main = "box3D")
box3D(x0 = seq(-0.8, -0.1, by = 0.1),
y0 = seq(-0.8, -0.1, by = 0.1),
z0 = seq(-0.8, -0.1, by = 0.1),
x1 = seq(0.8, 0.1, by = -0.1),
y1 = seq(0.8, 0.1, by = -0.1),
z1 = seq(0.8, 0.1, by = -0.1),
col = rainbow(n = 8, alpha = 0.1),
border = "black", lwd = 2, phi = 20)
# here the perspective does not always work
# use alpha.col to set the transparency of a vector of colors
box3D(x0 = runif(3), y0 = runif(3), z0 = runif(3),
x1 = runif(3), y1 = runif(3), z1 = runif(3),
col = c("red", "lightblue", "orange"), alpha = 0.5,
border = "black", lwd = 2)
## ========================================================================
## rectangles
## ========================================================================
# at constant 'z'
rect3D(x0 = seq(-0.8, -0.1, by = 0.1),
y0 = seq(-0.8, -0.1, by = 0.1),
z0 = seq(-0.8, -0.1, by = 0.1),
x1 = seq(0.8, 0.1, by = -0.1),
y1 = seq(0.8, 0.1, by = -0.1),
col = gg.col(8), border = "black",
bty = "g", lwd = 2, phi = 20, main = "rect3D")
# constant y and with transparent facets
rect3D(x0 = 0, y0 = 0, z0 = 0, x1 = 1, z1 = 5,
ylim = c(0, 1), facets = NA, border = "red",
bty = "g", lwd = 2, phi = 20)
# add rect at constant z, with colored facet
rect3D(x0 = 0, y0 = 0, z0 = 0, x1 = 1, y1 = 1,
border = "red", add = TRUE)
## ========================================================================
## arrows added to a persp plot
## ========================================================================
x <- y <- seq(-10, 10, length = 30)
z <- outer(x, y, FUN = function(x,y) x^2 + y^2)
persp3D(x, y, z, theta = 30, phi = 30,
col = "lightblue", ltheta = 120, shade = 0.75,
ticktype = "detailed", xlab = "X",
ylab = "Y", zlab = "x^2+y^2" )
# Points where to put the arrows
x <- y <- seq(-10, 10, len = 6)
X0 <- outer(x, y, FUN = function (x,y) x)
Y0 <- outer(x, y, FUN = function (x,y) y)
Z0 <- outer(x, y, FUN = function (x,y) x^2 + y^2)
X1 <- X0 + 1
Y1 <- Y0 + 1
Z1 <- Z0 + 10
arrows3D(X0, Y0, Z0, X1, Y1, Z1, lwd = 2,
add = TRUE, type = "curved", col = "red")
segments3D(X0, Y0, Z0, X0, Y0, rep(0, length(X0)), lwd = 2,
add = TRUE, col = "green")
## ========================================================================
## polygon3D
## ========================================================================
x <- runif(10)
y <- runif(10)
z <- runif(10)
polygon3D(x, y, z)
# several polygons, separated by NAs
x <- runif(39)
y <- runif(39)
z <- runif(39)
ii <- seq(4, 36, by = 4)
x[ii] <- y[ii] <- z[ii] <- NA
# transparent colors (alpha)
polygon3D(x, y, z, border = "black", lwd = 3,
col = gg.col(length(ii) + 1, alpha = 0.8),
main = "polygon3D")
## ========================================================================
## 2D examples, with color key
## ========================================================================
arrows2D(x0 = runif(10), y0 = runif(10),
x1 = runif(10), y1 = runif(10), colvar = 1:10,
code = 3, main = "arrows2D, segments2D")
segments2D(x0 = runif(10), y0 = runif(10),
x1 = runif(10), y1 = runif(10), colvar = 1:10,
lwd = 2, add = TRUE, colkey = FALSE)
# transparency
rect2D(x0 = runif(10), y0 = runif(10),
x1 = runif(10), y1 = runif(10), colvar = 1:10,
alpha = 0.4, lwd = 2, main = "rect2D")
## ========================================================================
## polygon2D
## ========================================================================
x <- runif(10)
y <- runif(10)
polygon2D(x, y) # same as polygon
# several polygons, separated by NAs
x <- runif(59)
y <- runif(59)
ii <- seq(5, 55, by = 5)
x[ii] <- y[ii] <- NA
# transparent colors (alpha)
polygon2D(x, y, border = "black", lwd = 3,
colvar = 1:(length(ii) + 1),
col = gg.col(), alpha = 0.2,
main = "polygon2D")
# restore plotting parameters
par(mfrow = pm)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.