mlplot
plots the scalar components as of the given random array or
vector as horizontal intervals, grouped by row.
mlplot(X, ...)
# S3 method for default
mlplot(
X,
y.center = TRUE,
y.shift = 0,
y.map = NULL,
mar = par("mar"),
left.margin = 3,
vline = NULL,
top.axis = TRUE,
exp.labels = FALSE,
x.ticks = NULL,
axes = NULL,
xlim = NULL,
ylim = NULL,
xlab = deparse(substitute(X)),
ylab = NULL,
las = NULL,
add = FALSE,
...
)
a random array or vector
further arguments passed to plot and points
center the intervals nicely at each y-coordinate?
add this amount to each y coordinate of an interval
optional function to compute the y-coordinates, given X
the margins of the plot
offset to add to the left margin of the plot (to add space for the labels)
if numeric, plot vertical lines at these (horizontal) coordinates
(logical) plot the top axis?
(logical) if the original scale is logarithmic, label ticks in original (exp) scale?
positions for the ticks of the x-axis
(logical) plot the axes at all?
x limits
y limits
x label
not used (instead of labels, the row names are shown)
the style of axis labels, see par
(logical) add the intervals to an existing plot?
mlplot
plots the scalar components of a vector or an array (2 or
3-dimensional) vertically (up to down) so that a component of a vector or a
row of a matrix is plotted at vertical points 1...nrow(x).
An 'mlplot' of a vector implements a "forest plot."
Scalars on the same row are plotted closely together. The positioning of
the scalars within a row are controlled by the arguments y.center
,
y.shift
, y.map
. These do not need to be set for the default
plot; if two arrays or vectors are plotted over on top of each other (using
add=TRUE
) then you should probably change y.shift
which
controls the vertical position of the array elements.
See demo(mlplot)
for a detailed
To change the color of the random components of the vector, use
rvcol
. Typically this is of the same length as X
, giving the
color `theme' for each component.
If X
is a 3-dimensional array, mlplot
is called repeatedly for
each 2-dimensional array X[,,k]
for each k
.
X
may also be a fixed numeric object.
NA
s (or random scalars with 100\
mlplot
is still experimental.
Kerman, J. and Gelman, A. (2007). Manipulating and Summarizing Posterior Simulations Using Random Variable Objects. Statistics and Computing 17:3, 235-244.
See also vignette("rv")
.
if (FALSE) {
# You can run this complete example by typing demo("mlplot")
n.rows <- 4; n.cols <- 5; n <- (n.rows*n.cols)
# Draw some fixed numbers
mu.true <- rnorm(1:n.rows, mean=1:n.rows, sd=1)
sigma.true <- 1
theta <- rvmatrix(rvnorm(n=n.cols, mean=mu.true, sd=sigma.true), nrow=n.rows)
#
col.labels <- paste("Time", 1:n.cols, sep=":")
row.labels <- paste("Unit", 1:n.rows, sep=":")
dimnames(theta) <- list(row.labels, col.labels)
#
par(mfrow=c(2,2))
mlplot(theta, main="theta")
abline(v=0, lty="dotted")
mlplot(t(theta), main="theta transposed")
abline(v=0, lty="dotted")
row.sd <- apply.rv(theta, 1, sd.rv)
col.sd <- apply.rv(theta, 2, sd.rv)
x.max <- max(rvquantile(c(row.sd, col.sd), 0.99))
mlplot(row.sd, xlim=c(0, x.max), main="theta: within-row sd for each unit")
abline(v=0)
mlplot(col.sd, xlim=c(0, x.max), main="theta: between-row sd for each time point")
abline(v=0)
}