[R] Rotated text on a regression line

Charles C. Berry cberry at tajo.ucsd.edu
Wed May 28 00:03:50 CEST 2008


On Tue, 27 May 2008, Xiaohui Chen wrote:

> Note that the scale of x-axis and y-axis is different in your plot. One 
> simple way to avoid this is to keep the data unit in the x direction is equal 
> that in the y direction, by setting asp=1 in calling plot function.


Or when that is not possible or not desirable translate the slope to 
the device scales:

usr2dev <- function(x) 180/pi*atan(x * diff( par("usr")[1:2])/ diff(par("usr")[3:4]))
text(2,yval,"Regression", srt=usr2dev( slope ), adj=0)

HTH,

Chuck

>
> X
>
> Dr. Christoph Scherber 写道:
>>  Dear all,
>>
>>  I stumbled over a problem recently when trying to use srt with text() on a
>>  windows device.
>>
>>  What I intended to do was to plot a simple regression line, and to rotate
>>  a piece of text such that the text has the same angle as the regression
>>  line.
>>
>>  However, the text is always plotted in a slightly wrong angle:
>>
>>  ####
>>
>>  x=1:10  #create arbitrary x and y values
>>  y=x*2-rnorm(1:10)
>>
>>  plot(x,y,pch=16,xlim=c(0,10))  #create the graph
>>  abline(lm(y~x))
>>
>>  #calculate the y coordinate of the text:
>>  yval=predict(lm(y~x),list(x=rep(2,length(x))))[1]
>>
>>  #calculate the slope:
>>  slope=as.numeric(lm(y~x)[[1]][2])
>>
>>  text(2,yval,"Regression",srt=180/pi*atan(slope),adj=0)
>>
>>  ####
>>
>>  What am I doing wrong here?
>>
>>  Many thanks in advance for any help!
>>
>>  Best wishes
>>  Christoph
>>
>>  (using R 2.6.1 on Windows XP)
>>
>>  ______________________________________________
>>  R-help at r-project.org mailing list
>>  https://stat.ethz.ch/mailman/listinfo/r-help
>>  PLEASE do read the posting guide
>>  http://www.R-project.org/posting-guide.html
>>  and provide commented, minimal, self-contained, reproducible code.
>> 
>> 
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>

Charles C. Berry                            (858) 534-2098
                                             Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu	            UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 92093-0901


More information about the R-help mailing list