On Fri, 2004-03-19 at 09:29, Marc Schwartz wrote:
On Fri, 2004-03-19 at 09:06, Robin Hankin wrote:
Hi everyone I want a square scatterplot with abline(0,1) going exactly through the SW and NE corners. By "square" I mean that the plotting region is exactly square, and that the axis limits are identical. x <- 1:20 y <- x+rep(c(-1,1),10) lims <- range(c(x,y)) None of the following do this: plot(x,y) ; abline(0,1) #not square plot(x,y,asp=1);abline(0,1) #diagonal line misses corners plot(x,y,asp=1,xaxs="i",yaxs="i");abline(0,1) #diagonal line misses corners plot(x,y,xaxs="i",yaxs="i");abline(0,1) #not square and diag misses corners plot(x,y,xlim=lims,ylim=lims,xaxs="i",yaxs="i");abline(0,1) #not square plot(x,y,asp=1,xlim=lims,ylim=lims,xaxs="i",yaxs="i");abline(0,1) #not square (plotting region about 8cm by 9.5cm) If I wrap the above lines in postscript(file="foo.ps", width=5,height=5) [...snip...] dev.off() then still none of the plots is exactly right [either one or both corners are missed, or the aspect ratio off]. What am I missing?
This works for me: x <- 1:20 y <- x + rep(c(-1, 1), 10) lims <- range(c(x, y)) plot(x, y, xlim = lims, ylim = lims, xaxs = "i", yaxs = "i") abline(0, 1) # Plot region is square
par("usr")
[1] 0 21 0 21 Here is a PS plot generated with: postscript(width = 5, height = 5) plot(x, y, xlim = lims, ylim = lims, xaxs = "i", yaxs = "i") abline(0, 1) dev.off() http://www.MedAnalytics.com/Rplots.ps HTH, Marc Schwartz
Robin, Sorry. It just dawned on me that you were not only referring to the line meeting the corners, but that the plot region itself by measurement was square, not just that the coordinates of the plot region were square. The following adjustment will work and I posted a new PS file at the same URL: # Set the plot region to be square par(pty = "s") plot(x, y, xlim = lims, ylim = lims, xaxs = "i", yaxs = "i") abline(0, 1) HTH, Marc Schwartz