Re: [R] Computing line= for mtext

2012-03-03 Thread Frank Harrell
Whoops. I spoke too soon. That last approach does not survive shrinking the graphics window. I'll go back to the axis and par approach. Frank Frank Harrell wrote > > Thanks very much for the ideas Baptiste and Greg. I think this is a way > to go: > > # Right justifies (if adj=1) a vector of

Re: [R] Computing line= for mtext

2012-03-03 Thread Frank Harrell
Thanks very much for the ideas Baptiste and Greg. I think this is a way to go: # Right justifies (if adj=1) a vector of strings against the right margin (side=4) or against the y-axis (side=2) outerText <- function(string, y, side=4, cex=par('cex'), adj=1, ...) { if(side %nin% c(2,4)) stop(

Re: [R] Computing line= for mtext

2012-03-02 Thread Greg Snow
I would use the regular text function instead of mtext (remembering to set par(xpd=...)), then use the grconvertX and grconvertY functions to find the location to plot at (possibly adding in the results from strwidth or stheight). On Thu, Mar 1, 2012 at 4:52 PM, Frank Harrell wrote: > Rich's poin

Re: [R] Computing line= for mtext

2012-03-02 Thread baptiste auguie
Hi, If you're going to use different text sizes and convert between units, it might be easier to do the calculations with grid. par(mar=c(1,1,1,5)) plot(1:10) labels = c(1, 2, 10, 123, 3.141592653589, 1.2, 2) sizes = c(1, 1, 2, 1, 0.4, 1, 3) # cex of individual labels ## pure base graphics max_w

Re: [R] Computing line= for mtext

2012-03-02 Thread Frank Harrell
Thanks Elai. axis(2) looks like a good approach. I think the way to solve for the pos= argument is to use: usr <- par('usr'); plt <- par('plt') usr[2] + (usr[2] - usr[1])/(plt[2] - plt[1]) * (1 - plt[2]) I think pos should have only one element. Thanks for your help, Frank ilai-2 wrote >

Re: [R] Computing line= for mtext

2012-03-02 Thread ilai
On Fri, Mar 2, 2012 at 1:17 PM, Frank Harrell wrote: > Hi Rich and Peter, > > What I am trying to do is the right-justify a vector of numbers to the right > of the y-axis so that the leftmost digit of all of the numbers is one > character to the right of the axis line.  axis() plots tick marks and

Re: [R] Computing line= for mtext

2012-03-02 Thread Frank Harrell
Hi Rich and Peter, What I am trying to do is the right-justify a vector of numbers to the right of the y-axis so that the leftmost digit of all of the numbers is one character to the right of the axis line. axis() plots tick marks and left-justifies the numbers. Peter's idea: - Since you

Re: [R] Computing line= for mtext

2012-03-01 Thread Richard M. Heiberger
Frank, this is it. It uses Peter's idea. plot(1:10) axis(side=2, 1:10, las=1, line=-31.5, lwd=0) axis(side=4, 1:10, las=1, labels=FALSE) Rich On Thu, Mar 1, 2012 at 6:52 PM, Frank Harrell wrote: > Rich's pointers deals with lattice/grid graphics. Does anyone have a > solution for base gr

Re: [R] Computing line= for mtext

2012-03-01 Thread Peter Langfelder
Frank, maybe I'm not understanding something right... you say right-justify in the right margin, meaning justify against the very right edge of the plot margin area? Since you're setting your right margin to 5, why not just mtext(s, side=4, las=1, at=5, adj=1, line = 5, cex=1) mtext(s, side=4, la

Re: [R] Computing line= for mtext

2012-03-01 Thread Frank Harrell
Rich's pointers deals with lattice/grid graphics. Does anyone have a solution for base graphics? Thanks Frank Richard M. Heiberger wrote > > Frank, > > This can be done directly with a variant of the panel.axis function. > See function panel.axis.right in the HH package. This was provided for

Re: [R] Computing line= for mtext

2012-02-29 Thread Richard M. Heiberger
Frank, This can be done directly with a variant of the panel.axis function. See function panel.axis.right in the HH package. This was provided for me by David Winsemius in response to my query on this list in October 2011 https://stat.ethz.ch/pipermail/r-help/2011-October/292806.html The email t

[R] Computing line= for mtext

2012-02-29 Thread Frank Harrell
I want to right-justify a vector of numbers in the right margin of a low-level plot. For this I need to compute the line parameter to give to mtext. Is this the correct scalable calculation? par(mar=c(4,3,1,5)); plot(1:20) s <- 'abcde'; w=strwidth(s, units='inches')/par('cin')[1] mtext(s, side=4