[R] problem with abline and lines

2010-03-22 Thread Martin Ivanov
 Dear R users,

I need to plot to perpendicular straight lines. However, although I set the 
coefficients 
so that the lines are perpendicular, they do not look to be so in the plot. 
Here is a minimal working example:
plot(x=c(-1, 1), y=c(-1, 1)); abline(a=0, b=1/sqrt(2)); abline(a=0, 
b=-1/sqrt(2))

Please tell me if the same problem is valid by you. I am running R-2.10.1 on 
Linux.

Is there a way out of this?

Regards,

Martin

__
R-help@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.


Re: [R] problem with abline and lines

2010-03-22 Thread Miguel Porto
Hi!

You forgot to invert the slope: a perpendicular of 1/sqrt(2) should be
-sqrt(2).
Also, you should add asp=1 in the plot command to lock the aspect ratio,
otherwise the scale of both X and Y may be different according to the size
of the window:
plot(x=c(-1, 1), y=c(-1, 1),asp=1); abline(a=0, b=1/sqrt(2)); abline(a=0,
b=-sqrt(2))

Miguel


On Mon, Mar 22, 2010 at 11:13 AM, Martin Ivanov tra...@abv.bg wrote:

  Dear R users,

 I need to plot to perpendicular straight lines. However, although I set the
 coefficients
 so that the lines are perpendicular, they do not look to be so in the plot.
 Here is a minimal working example:
 plot(x=c(-1, 1), y=c(-1, 1)); abline(a=0, b=1/sqrt(2)); abline(a=0,
 b=-1/sqrt(2))

 Please tell me if the same problem is valid by you. I am running R-2.10.1
 on Linux.

 Is there a way out of this?

 Regards,

 Martin

 __
 R-help@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.


[[alternative HTML version deleted]]

__
R-help@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.


Re: [R] problem with abline and lines

2010-03-22 Thread Ted Harding
On 22-Mar-10 11:13:39, Martin Ivanov wrote:
  Dear R users,
 I need to plot to perpendicular straight lines. However, although
 I set the coefficients so that the lines are perpendicular, they
 do not look to be so in the plot. Here is a minimal working example:
 
 plot(x=c(-1, 1), y=c(-1, 1)); abline(a=0, b=1/sqrt(2)); abline(a=0,
 b=-1/sqrt(2))
 
 Please tell me if the same problem is valid by you. I am running
 R-2.10.1 on Linux.
 
 Is there a way out of this?
 
 Regards,
 Martin

Hi Martin,
For one thing, your coefficients are wrong for orthogonality.
The condition for y = a1 + b1*x and y = a2 + b2*x to be perpendicular
to each other is that b1*b2 = -1. It will look much better with

  plot(x=c(-1, 1), y=c(-1, 1)); 
  abline(a=0, b=1/sqrt(2)); 
  abline(a=0, b=-sqrt(2))

but probably will not look quite right, because the plot() command
does not necessarily ensure that the x and y axes are identically
scaled (in screen coordinates) when they appear on screen.

To ensure this as well, you need to set the aspect-ratio to be 1:

  plot(x=c(-1, 1), y=c(-1, 1), asp=1);
  abline(a=0, b=1/sqrt(2)); 
  abline(a=0, b=-sqrt(2))

It can take a little while to discover the parameter asp.
From ?plot (which does not mention it) you will find a suggestion
to look at ?plot.default for further details, where you can read:

  plot(x, y = NULL, type = p,  xlim = NULL, ylim = NULL,
   log = , main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
   ann = par(ann), axes = TRUE, frame.plot = axes,
   panel.first = NULL, panel.last = NULL, asp = NA, ...)

and:

  asp: the y/x aspect ratio, see 'plot.window'. And then ?plot.window

tells you all about it:

  asp: If 'asp' is a finite positive value then the window is set up
   so that one data unit in the x direction is equal in length
   to 'asp' * one data unit in the y direction.

This even applies if you distort a previous plot window by dragging
one edge of it. For example, kill any existing plot window, and then
execute the above to create a new one. Then, say, drag the left-hand
edge so as to halve the width without changing the height. Then
repeat the plot commands. You will find that in the new plot the
two lines are again perpendicular, the shape of the window has
not changed, but the y-axis has now been extended numerically so that
the aspect ratio (as defined above) is still 1.0!

Hoping this helps!
Ted.


E-Mail: (Ted Harding) ted.hard...@manchester.ac.uk
Fax-to-email: +44 (0)870 094 0861
Date: 22-Mar-10   Time: 11:43:32
-- XFMail --

__
R-help@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.