## Help is on the way [Off Topic]

Hi ElMaestro,

Hope you enjoy it.

The problem with your code is that rect() does not – and can not – ‘know’ how wide text() will be.

A workaround:

foo2 <- function(name, h, w, values, loc, cex, lgd) {   pdf(name, height = 4, width = 3)   barplot(values, las = 1)   legend(loc, legend = lgd,          cex = cex,     # trial & error          x.intersp = 0, # otherwise, we have a left margin          trace = TRUE)  # shows user coordinates in the console   dev.off() } name <- "foopdf2.pdf" foo2(name = name, h = 4, w = 3,      values = c(8, 2, 3, 3, 1, 2, 3, 1, 9),      loc = "center", cex = 0.85,      lgd = c("Text is ok.", "Text is also ok.")) system2("open", args = name, wait = TRUE)

With the additional argument plot = FALSE you could assign all what is needed to a variable:
rect a list with components
• w, h
positive numbers giving width and height of the legend’s box.
• left, top
x and y coordinates of upper left corner of the box.
text a list with components
• x, y
numeric vectors of length length(legend), giving the x and y coordinates of the legend's text(s).
Then generate a rectangle which is large enough to contain the text. However, using legend() directly (eventually with x, y coordinates) is much simpler. See the examples at the end of the man page of legend.

Dif-tor heh smusma 🖖
Helmut Schütz

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes