[R] Text position in Traditional Graphics

Marc Schwartz marc_schwartz at comcast.net
Wed Jan 24 23:10:23 CET 2007


On Wed, 2007-01-24 at 16:30 -0500, Mike Prager wrote:
> R 2.4.1 on Windows XP.
> 
> Question:  In traditional graphics, is it possible to find out
> the height of a line of text in units that can be used in
> arithmetic and then in calls to text()? 
> 
> Context:  I have written a function that draws a plot and then,
> depending on whether some arguments are TRUE or FALSE, draws
> various lines of text in the plot. The text lines may be turned
> on or off individually by the user. The function uses plot() and
> several calls to text().
> 
> However, I have not found a good way to adjust the Y coordinate
> of the text for lines after the first. I would like this to work
> when the graphics device (windows) is opened at (or resized to)
> a wide range of sizes.  The issue is that a line of text takes
> up a smaller fraction of the total Y span of the plotting region
> as the window gets larger.
> 
> It seems this can be done with grid graphics, but although I
> plan to learn grid, I am hoping that for now, I can do this work
> with traditional graphics.
> 
> Thanks!

Mike, you might want to take a look at:

  ?strheight

The one thing to be potentially aware of, is if the plot window is
resized, some aspects of drawing text can be subject to alteration. It
may take some trial and error to determine how the method you wish to
use may be prone to such problems.

For example:

 plot(1, type = "n")
 text(1, 1, "This is a test")
 text(1, 1 + strheight("T"), "This is a test")
 text(1, 1 + strheight("T") * 2, "This is a test")
 text(1, 1 + strheight("T") * 3, "This is a test")

Now, drag and resize the plot window here

Then run:

  text(1, 1 + strheight("T") * 4, "This is a test")

This may behave differently on Windows, but on Linux, when I resize the
X window, the last line of text (* 4) is placed between (* 2) and (* 3).

HTH,

Marc Schwartz



More information about the R-help mailing list