File: perspbox.Rd

package info (click to toggle)
r-cran-plot3d 1.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,588 kB
  • sloc: makefile: 2
file content (168 lines) | stat: -rw-r--r-- 6,817 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
\name{Perspective box}
\alias{perspbox}
\title{
  Creates an empty perspective box, ready for adding objects
}
\description{
  \code{perspbox} draws a box and labels, and makes space for a colorkey (if any).
}
\usage{
perspbox (x = seq(0, 1, length.out = nrow(z)), 
          y = seq(0, 1, length.out = ncol(z)), z, 
          bty = c("b", "b2", "f", "g", "bl", "bl2", "u", "n"),  ..., 
          col.axis = "black", col.panel = NULL, lwd.panel = 1,                     
          col.grid = NULL, lwd.grid = 1, 
          phi = 40, theta = 40, col = NULL,
          colkey = NULL, plot = TRUE)
}

\arguments{
  \item{x, y }{Vectors with x and y values. It is sufficient to pass the 
    ranges of the x- and y-values, as they will not be drawn. 
    If \code{z} is a matrix, it is required that \code{length(x) = nrow(z)} and 
    \code{length(y) = ncol(z)}.
    }
  \item{z }{Matrix or vector with z-values. If \code{z} is a matrix, 
    it is sufficient to pass a diagonal matrix with the range of the z-values, 
    as they will not be drawn. 
    }
  \item{bty }{The type of the box; only effective if the \link{persp} 
    argument \code{box} equals \code{TRUE} (the default).
    Unless \code{bty} is equal to \code{"u"} then the arguments 
    \code{col.axis, col.panel, lwd.panel, col.grid, lwd.grid} will be ignored.
    \code{"f"} is the full box, the default as from \link{persp}, 
    \code{"b"} has only the back panels visible, when \code{"b2"}
    has back panels and grid lines, \code{"g"} has grey background with white 
    gridlines, \code{"bl"} has a black background, 
    \code{"bl2"} has a black background with grey lines.
    \code{"u"} means that the user will specify the arguments 
    \code{col.axis, col.panel, lwd.panel, col.grid, lwd.grid} manually.
    \code{"n"} means that no box will be drawn. This is the same as setting
    \code{box = FALSE}.
    }
  \item{col.axis, col.panel, col.grid }{The color of the axis line, of the 
    axis panel or of the grid lines. Only used if \code{bty = "u"}.
    }
  \item{lwd.panel, lwd.grid }{The width of the panel border or of the 
    grid lines. Only used if \code{bty = "u"}.
    }
  \item{theta, phi }{The angles defining the viewing direction. 
    \code{theta} gives the azimuthal direction and \code{phi} the colatitude. 
    see \link{persp}.
    }
  \item{col }{Colors to be used for coloring the \code{colvar} variable. 
    Here only used for assessing if a color key should be drawn.
    }
 \item{colkey }{A logical, \code{NULL} (default), or a \code{list} with parameters 
    for the color key (legend). List parameters should be one of 
    \code{side, plot, length, width, dist, shift, addlines, col.clab, cex.clab,
      side.clab, line.clab, adj.clab, font.clab}
    and the axis parameters \code{at, labels, tick, line, pos, outer, font, lty, lwd,
    lwd.ticks, col.box, col.axis, col.ticks, hadj, padj, cex.axis, mgp, tck, tcl, las}.
    The defaults for the parameters are \code{side = 4, plot = TRUE, length = 1, width = 1, 
      dist = 0, shift = 0, addlines = FALSE, col.clab = NULL, cex.clab = par("cex.lab"), 
      side.clab = NULL, line.clab = NULL, adj.clab = NULL, font.clab = NULL})
    See \link{colkey}.
    
    The default is to draw the color key on side = 4, i.e. in the right margin.
    If \code{colkey} = \code{NULL} then a color key will be added only if \code{col} is a vector.
    Setting \code{colkey = list(plot = FALSE)} will create room for the color key 
    without drawing it.
    if \code{colkey = FALSE}, no color key legend will be added.
    } 
  \item{plot }{Logical. If \code{TRUE} (default), a plot is created, 
    otherwise the viewing transformation matrix is returned (as invisible). 
    } 
  \item{\dots}{additional arguments passed to \link{persp}. 

    The following \link{persp} arguments can be specified: 
    \code{xlim, ylim, zlim, xlab, ylab, zlab, main, sub, r, d, 
    scale, expand, box, axes, nticks, ticktype}.      

    Arguments \code{scale} and \code{expand} affect the size of the axes.
    
    The arguments after \dots must be matched exactly.
    }
}

\value{
  Function \code{perspbox} returns the viewing transformation matrix.
  See \link{trans3D}.
}

\seealso{
  \link{persp3D}, \link{scatter2D}, \link{surf3D} for examples where box types 
   different than the default are used.
   
  \link{Hypsometry} for an example where colored axis-panels are added to a 
  figure started with \code{perspbox}.
}
\author{Karline Soetaert <karline.soetaert@nioz.nl>}

\details{
  The arguments \code{xlim}, \code{ylim}, \code{zlim} only affect the axes.
  All objects will be plotted, including those that fall out of these ranges.
  To select objects only within the axis limits, use \link{plotdev}.

  The predefined box types \code{bty} are defined as follows:

  ``f'': all panels are shown and transparent, also the \link{persp} default.

  ``b'': only backward panels shown.
  
  ``b2'': as ``b'' with \code{col.grid = "grey"}.

  ``g'': only backward panels shown; \code{col.panel = grey(0.95)}, 
    \code{col.axis = "grey"},
     \code{lwd.grid = 2} and \code{col.grid = "white"}.

  ``bl'': only backward panels shown; \code{col.panel = "black"}, 
  \code{col.axis = "grey"},
     \code{lwd.grid = 2} and \code{col.grid = "white"}.

  ``n'': no box is drawn.
}

\examples{
# save plotting parameters                            
 pm   <- par("mfrow")
 pmar <- par("mar")

## ========================================================================
## The 4 predefined box types
## ========================================================================

 par(mfrow = c(2, 2), mar = c(1, 1, 1, 1))
 
# box type with only backward panels
 perspbox(z = volcano, bty = "b", ticktype = "detailed", d = 2, 
          main  = "bty = 'b'")
# box as in 'persp'
 perspbox(z = volcano, bty = "f", ticktype = "detailed", 
          d = 2, main  = "bty = 'f'")

# back panels with gridlines, detailed axes
 perspbox(z = volcano, bty = "b2", ticktype = "detailed", 
          d = 2, main  = "bty = 'b2'")

# ggplot-type, simple axes 
 perspbox(z = volcano, bty = "g", 
          d = 2, main  = "bty = 'g'")

## ========================================================================
## A user-defined box
## ========================================================================

 par(mfrow = c(1, 1))

 perspbox(z = diag(2), bty = "u", ticktype = "detailed", 
          col.panel = "gold", col.axis = "white",  
          scale = FALSE, expand = 0.4, 
          col.grid = "grey", main = "user-defined")

# restore plotting parameters
 par(mfrow = pm)
 par(mar = pmar)
}
\keyword{ hplot }