I want axes that cross
I would also add: 1. Chapter 12 in "An Introduction to R" 2. Chapter 3 in Paul's "R Graphics" book: http://www.stat.auckland.ac.nz/~paul/RGraphics/rgraphics.html Note that the figures and code used for the graphics in the above chapter are available here: http://www.stat.auckland.ac.nz/~paul/RGraphics/chapter3.html HTH, Marc
on 02/16/2009 03:14 AM Mark Difford wrote:
Hi Paul,
Have you ever seen a drawing of the regions of an R plot with the terminology that is used for parts?
From what I can remember, several documents on CRAN cover this. The one that
springs to mind is Alzola & Harrell's "An Introduction to S and the Hmisc and Design Libraries,? which you can download from the Contributed Documentation link on CRAN. Chap. 4 of MASS by Venables & Ripley (4th ed.) will also give you what you want. Regards, Mark. Paul Johnson-11 wrote:
On Fri, Feb 13, 2009 at 3:14 PM, Marc Schwartz <marc_schwartz at comcast.net> wrote:
on 02/13/2009 02:19 PM Paul Johnson wrote:
On Fri, Feb 13, 2009 at 1:51 PM, Marc Schwartz
OK, so given all of the above, something like the following should work:
set.seed(1233240)
x <- rnorm(100)
z <- gl(2,50)
y <- rnorm(100, mean = 1.8 * as.numeric(z))
# Calculate a new range, subtracting a definable value
# from the min of each vector for the new minimum
# Adust the 0.25 as may be needed
X <- c(min(x) - 0.25, max(x))
Y <- c(min(y) - 0.25, max(y))
# Use 'X' and "Y' here, not 'x' and 'y'
# So that the plot region is extended appropriately
plot(X, Y, type = "n", axes = F, xlab = "x", ylab = "y")
points(x, y, pch = "$", cex = 0.7, col = z)
# DO use 'pos'...
axis(1, pos = Y[1], col = "green", col.axis = "green")
axis(2, pos = X[1], col = "red", col.axis = "red")
# get the plot region boundaries
usr <- par("usr")
segments(X[1], usr[3], X[1], usr[4], col = "red")
segments(usr[1], Y[1], usr[2], Y[1], col = "green")
HTH,
Marc
Thanks, Marc and everybody. This last suggestion produces the graph I was trying for. The other approaches that people suggest, using pos or xaxp, produce other undesired changes in the tick marks or the position of the axes relative to the data. xaxp offers the promise of a more intuitive solution, except that, when using it, the tick marks are pushed off in a bad way. Your use of segments to draw the extensions of the axes was the first intuition I had, but I did not know about the trick you used to retrieve the size of the usr box. More secrets of par, revealed. Have you ever seen a drawing of the regions of an R plot with the terminology that is used for parts? Until I saw your example code, I had not understood that the plot axes are placed at the absolute edge of the user plotting region, for example.