# [R] scaling with relative units in plots or retrieving axes limits in plots

Jannis bt_jannis at yahoo.de
Wed May 19 12:18:20 CEST 2010

```Sorry for the spamming, but there was a slight mistake in my function. Even though something similar most probably exists, a correct version is attached below, just in case :-)

trnsf.coords = function(x=c(),y=c())

# This function transfers relative coordinates between 0 and 1 for two arrays with x
# and y values into the coordinate system of the current plot.
{
plot_extremes=par()\$usr
x_min=plot_extremes
x_max=plot_extremes
y_min=plot_extremes
y_max=plot_extremes

x_trans=x_min+(x*(x_max-x_min))
y_trans=y_min+(y*(y_max-y_min))
if (length(y)==0)
{
output=list(x=x_trans)
} else if (length(x) ==0) {
output=list(y=y_trans)
} else {
output=list(x=x_trans,y=y_trans)
}
return(output)

}

--- Jannis <bt_jannis at yahoo.de> schrieb am Di, 18.5.2010:

> Von: Jannis <bt_jannis at yahoo.de>
> Betreff: Re: [R] scaling with relative units in plots or retrieving axes limits in plots
> An: r-help at stat.math.ethz.ch
> Datum: Dienstag, 18. Mai, 2010 14:50 Uhr
> Thanks for the replies! If
> anybody  encounters a similar problem, the function
> that now does what I wanted is attached below.
>
>
> Best
> Jannis
>
>
>
> trnsf.coords = function(array_x,array_y)
>
> # This function transfers relative coordinates between 0
> and 1 for two arrays with x
> # and y values into the coordinate system of the current
> plot.
>
> {
>     plot_extremes=par()\$usr
>     x_min=plot_extremes
>     x_max=plot_extremes
>     y_min=plot_extremes
>     y_max=plot_extremes
>
>     x_trans=x_min+(array_x*x_max-x_min)
>     y_trans=y_min+(array_y*y_max-y_min)
>     output=list(x=x_trans,y=y_trans)
>     return(output)
>
> }
>
> --- Jannis <bt_jannis at yahoo.de>
> schrieb am Di, 18.5.2010:
>
> > Von: Jannis <bt_jannis at yahoo.de>
> > Betreff: [R] scaling with relative units in plots or
> retrieving axes limits in plots
> > An: r-help at stat.math.ethz.ch
> > Datum: Dienstag, 18. Mai, 2010 14:23 Uhr
> > Dears,
> >
> >
> > a way to define x and y positions in plots in
> relative
> > numbers (e.g in fractions  between 0 and 1 referring
> to
> > relative positions inside the plot region) would
> really help
> > me. One example I would need this to would be to add
> text
> > via text() to a plot always at a defined spot, e.g the
> upper
> > left corner. Until now I always determined maximum x
> and y
> > values and used those, but defining relative
> positions
> > straight away would be much easier. Possible
> solutions:
> >
> > 1. Predefined function
> > Is there anything available that lets me run (for
> > example):
> >
> > text(0.5,0.5,'middle')
> >
> > which always puts text on these relative points?
> >
> >
> >
> > 2. Create my own function
> > It would be straightforward to create my own function
> that
> > translates the relative number to the axes values in
> the
> > actual plot, so that
> >
> > text(my.function(0.5,0.5),'middle')
> >
> > would do what I want. For this I would need to be able
> to
> > somehow retrieve the axis limits for x and y axes. Is
> there
> > any way I could do this after having called plot()?
> >
> >
> >
> > Thanks for your help!
> >
> >
> > Jannis
> >
> >
> >
> >
> > ______________________________________________
> > R-help at r-project.org
> > mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > and provide commented, minimal, self-contained,
> > reproducible code.
> >
>
>
>
> ______________________________________________
> R-help at r-project.org
> mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help