[R] What's box() (exactly) doing?

Marius Hofert marius.hofert at uwaterloo.ca
Fri Jun 24 04:29:45 CEST 2016


Hi,

I would like to replicate the behavior of box() with rect() (don't ask why).
However, my rect()angles are always too small. I looked a bit into the
internal C_box but
couldn't figure out how to solve the problem. Below is a minimal
working (and a slightly bigger) example.

Cheers,
Marius

## MWE
plot(NA, type = "n", ann = FALSE, axes = FALSE, xlim = 0:1, ylim = 0:1)
rect(xleft = 0, ybottom = 0, xright = 1, ytop = 1, col = "grey80") #
should match box()
box()

## Extended example

## Basic plot
my_rect <- function()
{
    plot(NA, type = "n", ann = FALSE, axes = FALSE, xlim = 0:1, ylim = 0:1)
    rect(xleft = 0, ybottom = 0, xright = 1, ytop = 1, col = "grey80")
# should match box()
    box()
}

## Layout
lay <- matrix(0, nrow = 3, ncol = 3, byrow = TRUE)
lay[1,1] <- 1
lay[2,1] <- 2
lay[2,2] <- 3
lay[2,3] <- 4
lay[3,3] <- 5
layout(lay, heights = c(1, 10, 1), widths = c(10, 1, 10))
layout.show(5) # => no space between rectangles; calls box() to draw the boxes

## Fill layout
par(oma = rep(0, 4), mar = rep(0, 4))
my_rect()
my_rect()
my_rect()
my_rect()
my_rect()
## => spaces between rectangles => why?/how to avoid?



More information about the R-help mailing list