[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[1]
    x_max=plot_extremes[2]
    y_min=plot_extremes[3]
    y_max=plot_extremes[4]

    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[1]
>     x_max=plot_extremes[2]
>     y_min=plot_extremes[3]
>     y_max=plot_extremes[4]
> 
>     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
> > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained,
> > reproducible code.
> > 
> 
> 
> 
> ______________________________________________
> R-help at 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.
> 





More information about the R-help mailing list