# Convert between the 5 different coordinate sytems on a graphical device

### Description

Takes a set of coordinates in any of the 5 coordinate systems (usr, plt, fig, dev, or tdev) and returns the same points in all 5 coordinate systems.

### Usage

1 | ```
cnvrt.coords(x, y = NULL, input = c("usr", "plt", "fig", "dev","tdev"))
``` |

### Arguments

`x` |
Vector, Matrix, or list of x coordinates (or x and y coordinates), NA's allowed. |

`y` |
y coordinates (if |

`input` |
Character scalar indicating the coordinate system of the input points. |

### Details

Every plot has 5 coordinate systems:

usr (User): the coordinate system of the data, this is shown by the tick marks and axis labels.

plt (Plot): Plot area, coordinates range from 0 to 1 with 0 corresponding to the x and y axes and 1 corresponding to the top and right of the plot area. Margins of the plot correspond to plot coordinates less than 0 or greater than 1.

fig (Figure): Figure area, coordinates range from 0 to 1 with 0 corresponding to the bottom and left edges of the figure (including margins, label areas) and 1 corresponds to the top and right edges. fig and dev coordinates will be identical if there is only 1 figure area on the device (layout, mfrow, or mfcol has not been used).

dev (Device): Device area, coordinates range from 0 to 1 with 0 corresponding to the bottom and left of the device region within the outer margins and 1 is the top and right of the region withing the outer margins. If the outer margins are all set to 0 then tdev and dev should be identical.

tdev (Total Device): Total Device area, coordinates range from 0 to 1 with 0 corresponding to the bottom and left edges of the device (piece of paper, window on screen) and 1 corresponds to the top and right edges.

### Value

A list with 5 components, each component is a list with vectors named x and y. The 5 sublists are:

`usr` |
The coordinates of the input points in usr (User) coordinates. |

`plt` |
The coordinates of the input points in plt (Plot) coordinates. |

`fig` |
The coordinates of the input points in fig (Figure) coordinates. |

`dev` |
The coordinates of the input points in dev (Device) coordinates. |

`tdev` |
The coordinates of the input points in tdev (Total Device) coordinates. |

### Note

You must provide both x and y, but one of them may be `NA`

.

This function is now depricated with the new functions
`grconvertX`

and `grconvertY`

in R version 2.7.0 and beyond.
These new functions use the correct coordinate system names and have
more coordinate systems available, you should start using them instead.

### Author(s)

Greg Snow 538280@gmail.com

### See Also

`par`

specifically 'usr','plt', and 'fig'. Also
'xpd' for plotting outside of the plotting region and 'mfrow' and
'mfcol' for multi figure plotting. `subplot`

,
`grconvertX`

and `grconvertY`

in R2.7.0 and later

### Examples

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | ```
old.par <- par(no.readonly=TRUE)
par(mfrow=c(2,2),xpd=NA)
# generate some sample data
tmp.x <- rnorm(25, 10, 2)
tmp.y <- rnorm(25, 50, 10)
tmp.z <- rnorm(25, 0, 1)
plot( tmp.x, tmp.y)
# draw a diagonal line across the plot area
tmp1 <- cnvrt.coords( c(0,1), c(0,1), input='plt' )
lines(tmp1$usr, col='blue')
# draw a diagonal line accross figure region
tmp2 <- cnvrt.coords( c(0,1), c(1,0), input='fig')
lines(tmp2$usr, col='red')
# save coordinate of point 1 and y value near top of plot for future plots
tmp.point1 <- cnvrt.coords(tmp.x[1], tmp.y[1])
tmp.range1 <- cnvrt.coords(NA, 0.98, input='plt')
# make a second plot and draw a line linking point 1 in each plot
plot(tmp.y, tmp.z)
tmp.point2 <- cnvrt.coords( tmp.point1$dev, input='dev' )
arrows( tmp.y[1], tmp.z[1], tmp.point2$usr$x, tmp.point2$usr$y,
col='green')
# draw another plot and add rectangle showing same range in 2 plots
plot(tmp.x, tmp.z)
tmp.range2 <- cnvrt.coords(NA, 0.02, input='plt')
tmp.range3 <- cnvrt.coords(NA, tmp.range1$dev$y, input='dev')
rect( 9, tmp.range2$usr$y, 11, tmp.range3$usr$y, border='yellow')
# put a label just to the right of the plot and
# near the top of the figure region.
text( cnvrt.coords(1.05, NA, input='plt')$usr$x,
cnvrt.coords(NA, 0.75, input='fig')$usr$y,
"Label", adj=0)
par(mfrow=c(1,1))
## create a subplot within another plot (see also subplot)
plot(1:10, 1:10)
tmp <- cnvrt.coords( c( 1, 4, 6, 9), c(6, 9, 1, 4) )
par(plt = c(tmp$dev$x[1:2], tmp$dev$y[1:2]), new=TRUE)
hist(rnorm(100))
par(fig = c(tmp$dev$x[3:4], tmp$dev$y[3:4]), new=TRUE)
hist(rnorm(100))
par(old.par)
``` |